diff options
| author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2017-01-18 08:32:54 +0000 |
|---|---|---|
| committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2017-01-18 08:32:54 +0000 |
| commit | a9bb00d82b42697464855db1e2e8846bc149bfac (patch) | |
| tree | 1cd49a26ed6bafc8178dbffda731fbe1f94a3c46 /llvm/test/CodeGen/SystemZ | |
| parent | 197db00e3ea7c6c5f2178e22ffb78061153203ff (diff) | |
| download | bcm5719-llvm-a9bb00d82b42697464855db1e2e8846bc149bfac.tar.gz bcm5719-llvm-a9bb00d82b42697464855db1e2e8846bc149bfac.zip | |
[SystemZ] Proper handling of undef flag while expanding pseudo.
During post-RA pseudo expansion, an 'undef' flag of the source operand should
be propagated by emitGRX32Move().
Review: Ulrich Weigand
llvm-svn: 292353
Diffstat (limited to 'llvm/test/CodeGen/SystemZ')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/undef-flag.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/undef-flag.ll b/llvm/test/CodeGen/SystemZ/undef-flag.ll new file mode 100644 index 00000000000..761559aa5a8 --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/undef-flag.ll @@ -0,0 +1,24 @@ +; Test that the backend does not mess up the I/R in case of a use of an undef +; register. This typically happens while expanding a pseudo or otherwise +; replacing an instruction for another. +; +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -verify-machineinstrs \ +; RUN: |& FileCheck %s + + +; LLCRMux +define void @f1(i8*) { +; CHECK-LABEL: f1: +; CHECK-NOT: *** Bad machine code: Using an undefined physical register *** +BB: + %L5 = load i8, i8* %0 + %B9 = lshr i8 %L5, -1 + br label %CF + +CF: ; preds = %CF, %BB + %Cmp25 = icmp ne i8 27, %B9 + br i1 %Cmp25, label %CF, label %CF34 + +CF34: ; preds = %CF + ret void +} |

