summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-02-16 04:02:09 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-02-16 04:02:09 +0000
commit9b529a76e9c607f2715529abe1cc9c2cffa35563 (patch)
treed2adf38680fd5073fb4a69d327dd8a2a221dc3ba /llvm/test/Transforms
parent7540eafb5c5f5b31436800dc6345f7b39d174e97 (diff)
downloadbcm5719-llvm-9b529a76e9c607f2715529abe1cc9c2cffa35563.tar.gz
bcm5719-llvm-9b529a76e9c607f2715529abe1cc9c2cffa35563.zip
IR: Properly return nullptr when getAggregateElement is out-of-bounds
We didn't properly handle the out-of-bounds case for ConstantAggregateZero and UndefValue. This would manifest as a crash when the constant folder was asked to fold a load of a constant global whose struct type has no operands. This fixes PR22595. llvm-svn: 229352
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstSimplify/load.ll19
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/load.ll b/llvm/test/Transforms/InstSimplify/load.ll
new file mode 100644
index 00000000000..92953cd0ebf
--- /dev/null
+++ b/llvm/test/Transforms/InstSimplify/load.ll
@@ -0,0 +1,19 @@
+; RUN: opt < %s -instsimplify -S | FileCheck %s
+
+@zeroinit = constant {} zeroinitializer
+@undef = constant {} undef
+
+define i32 @crash_on_zeroinit() {
+; CHECK-LABEL: @crash_on_zeroinit
+; CHECK: ret i32 0
+ %load = load i32* bitcast ({}* @zeroinit to i32*)
+ ret i32 %load
+}
+
+define i32 @crash_on_undef() {
+; CHECK-LABEL: @crash_on_undef
+; CHECK: ret i32 undef
+ %load = load i32* bitcast ({}* @undef to i32*)
+ ret i32 %load
+}
+
OpenPOWER on IntegriCloud