[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / NewGVN / non-integral-pointers.ll
blob75b8285d51f9aec7d6e45d7cd7998ea770639a42
1 ; RUN: opt -newgvn -S < %s | FileCheck %s
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:4"
4 target triple = "x86_64-unknown-linux-gnu"
6 define void @f0(i1 %alwaysFalse, i64 %val, i64* %loc) {
7 ; CHECK-LABEL: @f0(
8 ; CHECK-NOT: inttoptr
9 ; CHECK-NOT: ptrtoint
10  entry:
11   store i64 %val, i64* %loc
12   br i1 %alwaysFalse, label %neverTaken, label %alwaysTaken
14  neverTaken:
15   %loc.bc = bitcast i64* %loc to i8 addrspace(4)**
16   %ptr = load i8 addrspace(4)*, i8 addrspace(4)** %loc.bc
17   store i8 5, i8 addrspace(4)* %ptr
18   ret void
20  alwaysTaken:
21   ret void
24 define i64 @f1(i1 %alwaysFalse, i8 addrspace(4)* %val, i8 addrspace(4)** %loc) {
25 ; CHECK-LABEL: @f1(
26 ; CHECK-NOT: inttoptr
27 ; CHECK-NOT: ptrtoint
28  entry:
29   store i8 addrspace(4)* %val, i8 addrspace(4)** %loc
30   br i1 %alwaysFalse, label %neverTaken, label %alwaysTaken
32  neverTaken:
33   %loc.bc = bitcast i8 addrspace(4)** %loc to i64*
34   %int = load i64, i64* %loc.bc
35   ret i64 %int
37  alwaysTaken:
38   ret i64 42