[tree-ssa] Merge status 2004-05-03

Andrew Haley aph@redhat.com
Fri May 7 19:38:00 GMT 2004

 >  > >         	 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!


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.

More information about the Gcc mailing list