forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set trunc store action to Expand for all X86 targets.
When compiling without SSE2, isTruncStoreLegal(F64, F32) would return Legal, whereas with SSE2 it would return Expand. And since the Target doesn't seem to actually handle a truncstore for double -> float, it would just output a store of a full double in the space for a float hence overwriting other bits on the stack. Patch by Luqman Aden! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217410 91177308-0d34-0410-b5e6-96231b3b80d8
- Loading branch information
1 parent
0acb489
commit 0868329
Showing
2 changed files
with
22 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
; RUN: llc -march=x86 < %s | FileCheck %s | ||
|
||
; CHECK-LABEL: @bar | ||
; CHECK: movl $1074339512, | ||
; CHECK: movl $1374389535, | ||
; CHECK: movl $1078523331, | ||
define void @bar() unnamed_addr { | ||
entry-block: | ||
%a = alloca double | ||
%b = alloca float | ||
|
||
store double 3.140000e+00, double* %a | ||
%0 = load double* %a | ||
|
||
%1 = fptrunc double %0 to float | ||
|
||
store float %1, float* %b | ||
|
||
ret void | ||
} |