diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-01-24 23:28:42 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-01-24 23:28:42 +0000 |
| commit | 1b8e437ab63e1487dfef32e9dbd1b3b10496c80f (patch) | |
| tree | b04c3a72072e9dc74406ba65ef47c998fd1c21df /llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll | |
| parent | 66ef9ad33f5f6234152454de40d1fb9ee8efe206 (diff) | |
| download | bcm5719-llvm-1b8e437ab63e1487dfef32e9dbd1b3b10496c80f.tar.gz bcm5719-llvm-1b8e437ab63e1487dfef32e9dbd1b3b10496c80f.zip | |
Set correct <def,undef> flags when lowering REG_SEQUENCE.
A REG_SEQUENCE instruction is lowered into a sequence of partial defs:
%vreg7:ssub_0<def,undef> = COPY %vreg20:ssub_0
%vreg7:ssub_1<def> = COPY %vreg2
%vreg7:ssub_2<def> = COPY %vreg2
%vreg7:ssub_3<def> = COPY %vreg2
The first def needs an <undef> flag to indicate it is the beginning of
the live range, while the other defs are read-modify-write. Previously,
we depended on LiveIntervalAnalysis to notice and fix the missing
<def,undef>, but that solution was never robust, it was causing problems
with ProcessImplicitDefs and the lowering of chained REG_SEQUENCE
instructions.
This fixes PR11841.
llvm-svn: 148879
Diffstat (limited to 'llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll')
| -rw-r--r-- | llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll b/llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll index b9d5600d2ad..1aee5088eee 100644 --- a/llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll +++ b/llvm/test/CodeGen/ARM/2010-06-29-PartialRedefFastAlloc.ll @@ -12,7 +12,7 @@ target triple = "thumbv7-apple-darwin10" ; CHECK: vld1.64 {d16, d17}, [r{{.}}] ; CHECK-NOT: vld1.64 {d16, d17} -; CHECK: vmov.f64 d19, d16 +; CHECK: vmov.f64 define i32 @test(i8* %arg) nounwind { entry: |

