-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Description
| 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.