summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/load-bitcast32.ll
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2016-02-03 18:04:13 +0000
committerQuentin Colombet <qcolombet@apple.com>2016-02-03 18:04:13 +0000
commit7ec03dc7f80e73dc60960fe163e20bf3da19c969 (patch)
treea7f038b399101f9c923d6207ae50377a2bf23984 /llvm/test/Transforms/InstCombine/load-bitcast32.ll
parentac29f01788e381b2a8560536997d44dfee87086d (diff)
downloadbcm5719-llvm-7ec03dc7f80e73dc60960fe163e20bf3da19c969.tar.gz
bcm5719-llvm-7ec03dc7f80e73dc60960fe163e20bf3da19c969.zip
[InstCombine] Revert r238452: Fold IntToPtr and PtrToInt into preceding loads.
According to git bisect, this is the root cause of a miscompile for Regex in libLLVMSupport. I am still working on reducing a test case. The actual bug may be elsewhere and this commit just exposed it. Anyway, at the moment, to reproduce, follow these steps: 1. Build clang and libLTO in release mode. 2. Create a new build directory <stage2> and cd into it. 3. Use clang and libLTO from #1 to build llvm-extract in Release mode + asserts using -O2 -flto 4. Run llvm-extract -ralias '.*bar' -S test/Other/extract-alias.ll Result: program doesn't contain global named '.*bar'! Expected result: @a0a0bar = alias void ()* @bar @a0bar = alias void ()* @bar declare void @bar() Note: In step #3, if you don't use lto or asserts, the miscompile disappears. llvm-svn: 259674
Diffstat (limited to 'llvm/test/Transforms/InstCombine/load-bitcast32.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/load-bitcast32.ll79
1 files changed, 0 insertions, 79 deletions
diff --git a/llvm/test/Transforms/InstCombine/load-bitcast32.ll b/llvm/test/Transforms/InstCombine/load-bitcast32.ll
deleted file mode 100644
index b1c78a8a314..00000000000
--- a/llvm/test/Transforms/InstCombine/load-bitcast32.ll
+++ /dev/null
@@ -1,79 +0,0 @@
-; RUN: opt -instcombine -S < %s | FileCheck %s
-
-target datalayout = "p:32:32:32"
-
-
-define i64* @test1(i8* %x) {
-entry:
-; CHECK-LABEL: @test1(
-; CHECK: load i64, i64*
-; CHECK: ret
- %a = bitcast i8* %x to i64*
- %b = load i64, i64* %a
- %c = inttoptr i64 %b to i64*
-
- ret i64* %c
-}
-
-define i32* @test2(i8* %x) {
-entry:
-; CHECK-LABEL: @test2(
-; CHECK: load i32*, i32**
-; CHECK: ret
- %a = bitcast i8* %x to i32*
- %b = load i32, i32* %a
- %c = inttoptr i32 %b to i32*
-
- ret i32* %c
-}
-
-define i64* @test3(i8* %x) {
-entry:
-; CHECK-LABEL: @test3(
-; CHECK: load i64*, i64**
-; CHECK: ret
- %a = bitcast i8* %x to i32*
- %b = load i32, i32* %a
- %c = inttoptr i32 %b to i64*
-
- ret i64* %c
-}
-
-define i64 @test4(i8* %x) {
-entry:
-; CHECK-LABEL: @test4(
-; CHECK: load i32, i32*
-; CHECK: zext
-; CHECK: ret
- %a = bitcast i8* %x to i64**
- %b = load i64*, i64** %a
- %c = ptrtoint i64* %b to i64
-
- ret i64 %c
-}
-
-define i32 @test5(i8* %x) {
-entry:
-; CHECK-LABEL: @test5(
-; CHECK: load i32, i32*
-; CHECK: ret
- %a = bitcast i8* %x to i32**
- %b = load i32*, i32** %a
- %c = ptrtoint i32* %b to i32
-
- ret i32 %c
-}
-
-define i64 @test6(i8* %x) {
-entry:
-; CHECK-LABEL: @test6(
-; CHECK: load i32, i32*
-; CHECK: zext
-; CHECK: ret
- %a = bitcast i8* %x to i32**
- %b = load i32*, i32** %a
- %c = ptrtoint i32* %b to i64
-
- ret i64 %c
-}
-
OpenPOWER on IntegriCloud