summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-12-12 04:24:17 +0000
committerChris Lattner <sabre@nondot.org>2006-12-12 04:24:17 +0000
commitbcb56d81045f46a939b872a111f39256bd38aa38 (patch)
tree129e040721cb930d09d3ef98aed4762466af1b2d /test
parentd93d46ee7e0a0e539d42139b85c71b2b8c3968fe (diff)
downloadllvm-bcb56d81045f46a939b872a111f39256bd38aa38.tar.gz
llvm-bcb56d81045f46a939b872a111f39256bd38aa38.tar.bz2
llvm-bcb56d81045f46a939b872a111f39256bd38aa38.tar.xz
new testcase for pr1045
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32467 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll b/test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll
new file mode 100644
index 0000000000..dbabe29995
--- /dev/null
+++ b/test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll
@@ -0,0 +1,24 @@
+; RUN: llvm-as < %s | opt -scalarrepl -disable-output
+; PR1045
+
+target datalayout = "e-p:32:32"
+target endian = little
+target pointersize = 32
+target triple = "i686-pc-linux-gnu"
+ "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>" = type { "struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"* }
+ "struct.__gnu_cxx::bitmap_allocator<char>" = type { ubyte }
+ "struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block" = type { [8 x sbyte] }
+
+implementation ; Functions:
+
+void %_ZN9__gnu_cxx16bitmap_allocatorIwE27_M_deallocate_single_objectEPw() {
+entry:
+ %this_addr.i = alloca "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* ; <"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"**> [#uses=3]
+ %tmp = alloca "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>", align 4 ; <"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+ store "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp, "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i
+ %tmp.i = load "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i ; <"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+ %tmp.i = bitcast "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp.i to "struct.__gnu_cxx::bitmap_allocator<char>"* ; <"struct.__gnu_cxx::bitmap_allocator<char>"*> [#uses=0]
+ %tmp1.i = load "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i ; <"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+ %tmp.i = getelementptr "struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp1.i, int 0, uint 0 ; <"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"**> [#uses=0]
+ unreachable
+}