mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Fix constant folding through bitcasts by no longer relying on undefined behaviour (converting NaN values between float and double).
SelectionDAG::getConstantFP(double Val, EVT VT, bool isTarget); should not be used when Val is not a simple constant (as the comment in SelectionDAG.h indicates). This patch avoids using this function when folding an unknown constant through a bitcast, where it cannot be guaranteed that Val will be a simple constant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163703 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -45,6 +45,16 @@ r:
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @f8() nounwind {
|
||||
; Check that constant propagation through (i32)-1 => (float)Nan => (i32)-1
|
||||
; gives expected result
|
||||
; CHECK: f8
|
||||
; CHECK: mvn r0, #0
|
||||
%tmp0 = bitcast i32 -1 to float
|
||||
%tmp1 = bitcast float %tmp0 to i32
|
||||
ret i32 %tmp1
|
||||
}
|
||||
|
||||
%t1 = type { <3 x float>, <3 x float> }
|
||||
|
||||
@const1 = global %t1 { <3 x float> zeroinitializer,
|
||||
|
Reference in New Issue
Block a user