Skip to content

Invalid type of 'ret' instruction #3095

@asl

Description

@asl
Bugzilla Link 2723
Resolution FIXED
Resolved on Aug 26, 2008 16:04
Version trunk
OS Linux
Attachments Preprocessed gzipped source
CC @sunfishcode

Extended Description

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 {
entry:
fptrunc double %y to float ; :0 [#uses=1]
fptrunc double %x to float ; :1 [#uses=1]
bitcast float %1 to i32 ; :2 [#uses=1]
zext i32 %2 to i64 ; :3 [#uses=1]
bitcast float %0 to i32 ; :4 [#uses=1]
zext i32 %4 to i64 ; :5 [#uses=1]
shl i64 %5, 32 ; :6 [#uses=1]
%.ins = or i64 %6, %3 ; [#uses=1]
%mrv8 = bitcast i64 %.ins to 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillallvm-toolsAll llvm tools that do not have corresponding tag

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions