summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/SystemZ
diff options
context:
space:
mode:
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-01-18 08:32:54 +0000
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-01-18 08:32:54 +0000
commita9bb00d82b42697464855db1e2e8846bc149bfac (patch)
tree1cd49a26ed6bafc8178dbffda731fbe1f94a3c46 /llvm/test/CodeGen/SystemZ
parent197db00e3ea7c6c5f2178e22ffb78061153203ff (diff)
downloadbcm5719-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.ll24
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
+}
OpenPOWER on IntegriCloud