This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Merge status 2004-05-03
> > > FAIL: Array_3 execution - gij test
> > > FAIL: Array_3 execution - gij test
This is a C++ compiler bug. What happens is that the exception region
has no landing pad, despite the fact that it is enclosed in a big
"try" block.
This is the faulting instruction:
12185 .LEHB248:
12186 # /local/aph/tree-ssa-20020619-branch/gcc/libjava/interpret.cc:1410
12187 .loc 2 1410 0
12188 3d2c 3B4204 cmpl 4(%edx), %eax # <variable>.length, index
12189 .LEHE248:
And here is its unwind info:
14348 056b FC6B .uleb128 .LEHB248-.LFB439 # region 248 start
14349 056d 03 .uleb128 .LEHE248-.LEHB248 # length
14350 056e 00 .uleb128 0x0 # landing pad
14351 056f 00 .uleb128 0x0 # action
Note the null landing pad. This is weird. All the other "might trap"
insns around this one have non-null landing pads. This one, for some
insane reason, doesn't.
So, this is a C++ compiler bug, and it's nothing to do with Java.
I punt!
Andrew.
BTW, the way this compiler generates EH info is gross. Rather than
simply wrapping the whole thing in a single EH region for a single try
statement, a separate region is generated for every single "might
trap" insn. This is quite pointless, and wastes a ton of space.