Closed Bug 664252 Opened 14 years ago Closed 14 years ago

Recent TraceMonkey merge broke clang builds

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: ehsan.akhgari, Assigned: luke)

References

Details

(Keywords: regression)

Attachments

(1 file)

Here is the build failure log: /home/ehsan/moz/src/js/src/jsinterp.cpp:4916:9: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4916:9: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3367:5: error: indirect goto might cross protected scopes EQUALITY_OP(==); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3367:5: note: instantiated from: EQUALITY_OP(==); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2816:9: error: indirect goto might cross protected scopes DO_OP(); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2816:9: note: instantiated from: DO_OP(); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3467:5: error: indirect goto might cross protected scopes RELATIONAL_OP(<=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3467:5: note: instantiated from: RELATIONAL_OP(<=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4878:13: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4878:13: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:5977:1: error: indirect goto might cross protected scopes END_VARLEN_CASE ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from: # define END_VARLEN_CASE DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:5977:1: note: instantiated from: END_VARLEN_CASE ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from: # define END_VARLEN_CASE DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6307:9: error: indirect goto might cross protected scopes BRANCH(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6307:9: note: instantiated from: BRANCH(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6716:17: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6716:17: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4388:13: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4388:13: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3839:17: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3839:17: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2556:5: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2556:5: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6000:1: error: indirect goto might cross protected scopes END_VARLEN_CASE ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from: # define END_VARLEN_CASE DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:6000:1: note: instantiated from: END_VARLEN_CASE ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2204:29: note: instantiated from: # define END_VARLEN_CASE DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2676:21: error: indirect goto might cross protected scopes DO_OP(); /* keep interrupting for op. */ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2676:21: note: instantiated from: DO_OP(); /* keep interrupting for op. */ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3463:5: error: indirect goto might cross protected scopes RELATIONAL_OP(<); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3463:5: note: instantiated from: RELATIONAL_OP(<); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3475:5: error: indirect goto might cross protected scopes RELATIONAL_OP(>=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3475:5: note: instantiated from: RELATIONAL_OP(>=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3457:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2698:9: error: indirect goto might cross protected scopes JS_EXTENSION_(goto *normalJumpTable[op]); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2698:23: note: instantiated from: JS_EXTENSION_(goto *normalJumpTable[op]); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3371:5: error: indirect goto might cross protected scopes EQUALITY_OP(!=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3371:5: note: instantiated from: EQUALITY_OP(!=); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3361:9: note: instantiated from: TRY_BRANCH_AFTER_COND(cond, 2); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3005:17: note: instantiated from: BRANCH(len); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2422:9: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3916:5: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:3916:5: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4574:1: note: possible target of indirect goto BEGIN_CASE(JSOP_CALL) ^ <scratch space>:152:1: note: instantiated from: L_JSOP_CALL ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4526:14: note: jump bypasses variable initialization CallArgs args; ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4731:13: error: indirect goto might cross protected scopes DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:33: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:4731:13: note: instantiated from: DO_NEXT_OP(len); ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2199:33: note: instantiated from: DO_OP(); \ ^ /home/ehsan/moz/src/js/src/jsinterp.cpp:2193:47: note: instantiated from: JS_EXTENSION_(goto *jumpTable[op]); \ ^ fatal error: too many errors emitted, stopping now [-ferror-limit=]
Blocks: clang-macosx
I get exactly the same error on Mac now. OS X 10.6.8, Clang 3.0. :-(
OS: Linux → All
Hardware: x86_64 → All
Luke told me on IRC that he's working on a fix.
Clang already has some extensions on what it allows in those cases. I quick look at the firefox doesn't shows any reason why it could not support CallArgs. I am currently reducing it. Hopefully it will find something I can fix in clang, if not, it will find what is non trivial about CallArgs initialization.
This patch simplifies how the interpreter handles eval/new/call to remove a bunch of goto intertwined-ness and hence the goto-past-non-POD-initialization.
Assignee: general → luke
Status: NEW → ASSIGNED
Attachment #539364 - Flags: review?(dvander)
ok, looks like there is more than what I thought on the clang side. The Apple gcc rejects the code I reported. Since firefox does build with it, I am now trying to reduce the failure on my laptop to get something that apple's gcc accepts and clang rejects.
Comment on attachment 539364 [details] [diff] [review] simplify interpreter call/new business Review of attachment 539364 [details] [diff] [review]: ----------------------------------------------------------------- ::: js/src/jsinterp.cpp @@ +4553,5 @@ > } > + regs.sp = args.spAfterCall(); > + CHECK_INTERRUPT_HANDLER(); > + TRACE_0(NativeCallComplete); > + DO_NEXT_OP(JSOP_CALL_LENGTH); len = ...; DO_NEXT_OP(len); There's an assertion under DNE that len is the value passed in -- only when the computed-goto interpreter isn't available. Which means Windows only, basically. Ain't it great?
Attachment #539364 - Flags: review?(dvander) → review+
Thanks Waldo, try server was just pointing that out to me. http://hg.mozilla.org/mozilla-central/rev/ce10e78d030d
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Rafael, why do you think this is a clang bug? According to the C++ standard, jump statements cannot skip over the initialization of non-POD object instances, right? If anything, I think this should be reported as a gcc bug.
Not a bug in the strict sense, but if might be an useful extension to have if it is something that c++0x has. Right now I am mostly curious what construct we are using that Apple's gcc accepts since it rejects the basic case of an empty base class.
Depends on: 666003
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: