[LLVMbugs] [Bug 1439] NEW: invoke has no landing pad after codegen

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue May 22 14:10:31 PDT 2007


http://llvm.org/bugs/show_bug.cgi?id=1439

           Summary: invoke has no landing pad after codegen
           Product: new-bugs
           Version: unspecified
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: baldrick at free.fr


In the testcase there are two calls to @__cxa_throw,
one of which is an invoke the other a normal call.
[Only the invoke one should be called when the program
is run].
After codegen
  llc -enable-eh -asm-verbose e.bc
there is only one call to @__cxa_throw but it
is the wrong one!  First of all, from the assembler
comment (#finally) you can see that it is the normal
call version that got put in (the other is in finally.i):

.LBB2_1:        #finally
        movl $_ZTI1A, 4(%esp)
        movl $_ZN1AD1Ev, 8(%esp)
        movl %esi, (%esp)
        call __cxa_throw
.LBB2_2:        #unwind

Secondly, in the exception handling table there is no
landing pad for this code range, there is only

        .long   .Llabel4-.Leh_func_begin2       # Region start
        .long   .Llabel5-.Llabel4       # Region length
        .long   0x0     # Landing pad
        .uleb128        0       # Action

which does not cover this.

My guess is that codegen cleverly saw that it could collapse
the two calls to @__cxa_throw into one call, thinking that they
were equivalent, without noticing that they differed in that
one was an invoke.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.



More information about the llvm-bugs mailing list