summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/SystemZ
diff options
context:
space:
mode:
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