summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll
diff options
context:
space:
mode:
authorSerguei Katkov <serguei.katkov@azul.com>2017-12-18 04:25:07 +0000
committerSerguei Katkov <serguei.katkov@azul.com>2017-12-18 04:25:07 +0000
commitb0b67a8d38643f74c4d748cdbfdc8d78cd857319 (patch)
tree25ebf9d24a3e4002de5b37624ba26d289510db69 /llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll
parent9da049fa8a76e1207f4f3582ee0c54e7b57d82b2 (diff)
downloadbcm5719-llvm-b0b67a8d38643f74c4d748cdbfdc8d78cd857319.tar.gz
bcm5719-llvm-b0b67a8d38643f74c4d748cdbfdc8d78cd857319.zip
[CGP] Fix the handling select inst in complex addressing mode
When we put the value in select placeholder we must pass the value through simplification tracker due to the value might be already simplified and erased. This is a fix for PR35658. Reviewers: john.brawn, uabelho Reviewed By: john.brawn Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41251 llvm-svn: 320956
Diffstat (limited to 'llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll')
-rw-r--r--llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll b/llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll
new file mode 100644
index 00000000000..bf6d0297475
--- /dev/null
+++ b/llvm/test/Transforms/CodeGenPrepare/X86/pr35658.ll
@@ -0,0 +1,21 @@
+; RUN: opt -S -codegenprepare -disable-complex-addr-modes=false -addr-sink-new-phis=true -addr-sink-new-select=true %s | FileCheck %s
+target datalayout =
+"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+define void @f2() {
+entry:
+ %arraydecay = getelementptr inbounds [2 x i16], [2 x i16]* undef, i16 0, i16 0
+ %arrayidx1 = getelementptr inbounds [2 x i16], [2 x i16]* undef, i16 0, i16 1
+ br label %for.body
+
+for.body: ; preds = %for.body, %entry
+ %e.03 = phi i16* [ %arraydecay, %entry ], [ %arrayidx1, %for.body ]
+ %tobool = icmp eq i16 undef, 0
+ br i1 undef, label %for.body, label %for.end
+
+for.end: ; preds = %for.body
+; CHECK: sunkaddr
+ %e.1.le = select i1 %tobool, i16* %arrayidx1, i16* %e.03
+ store i16 0, i16* %e.1.le, align 1
+ ret void
+}
OpenPOWER on IntegriCloud