[LLVMbugs] [Bug 2723] New: Invalid type of 'ret' instruction

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue Aug 26 10:37:29 PDT 2008


           Summary: Invalid type of 'ret' instruction
           Product: tools
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: llvm-g++
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: asl at math.spbu.ru
                CC: gohman at apple.com, llvmbugs at cs.uiuc.edu

Consider the attached preprocessed source. Here (x86-64/linux) I'm getting the
following via 'llvm-g++ -O2':

define { double } @_ZN7WebCore10FloatPoint15narrowPrecisionEdd(double %x,
double %y) nounwind {
        fptrunc double %y to float              ; <float>:0 [#uses=1]
        fptrunc double %x to float              ; <float>:1 [#uses=1]
        bitcast float %1 to i32         ; <i32>:2 [#uses=1]
        zext i32 %2 to i64              ; <i64>:3 [#uses=1]
        bitcast float %0 to i32         ; <i32>:4 [#uses=1]
        zext i32 %4 to i64              ; <i64>:5 [#uses=1]
        shl i64 %5, 32          ; <i64>:6 [#uses=1]
        %.ins = or i64 %6, %3           ; <i64> [#uses=1]
        %mrv8 = bitcast i64 %.ins to double             ; <double> [#uses=1]
        ret double %mrv8

Note the type of function and type of 'ret'.

This makes inliner unhappy, due to assertion in RAUW. Verifier does not catch
this case, btw.

This breaks webkit here.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list