1; RUN: opt -gvn -S < %s | FileCheck %s
2
3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:4"
4target triple = "x86_64-unknown-linux-gnu"
5
6define 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
13
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
19
20 alwaysTaken:
21  ret void
22}
23
24define 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
31
32 neverTaken:
33  %loc.bc = bitcast i8 addrspace(4)** %loc to i64*
34  %int = load i64, i64* %loc.bc
35  ret i64 %int
36
37 alwaysTaken:
38  ret i64 42
39}
40