-; RUN: llvm-upgrade < %s | llvm-as | opt -globalopt -instcombine | \
-; RUN: llvm-dis | grep 'ret i1 true'
-
+; RUN: opt < %s -S -globalopt -instcombine | FileCheck %s
;; check that global opt turns integers that only hold 0 or 1 into bools.
-%G = internal global int 0 ;; This only holds 0 or 1.
-
-implementation
+@G = internal addrspace(1) global i32 0
+; CHECK: @G
+; CHECK: addrspace(1)
+; CHECK: global i1 false
-void %set1() {
- store int 0, int* %G
- ret void
+define void @set1() {
+ store i32 0, i32 addrspace(1)* @G
+; CHECK: store i1 false
+ ret void
}
-void %set2() {
- store int 1, int* %G
- ret void
+
+define void @set2() {
+ store i32 1, i32 addrspace(1)* @G
+; CHECK: store i1 true
+ ret void
}
-bool %get() {
- %A = load int* %G
- %C = setlt int %A, 2 ;; always true
- ret bool %C
+define i1 @get() {
+; CHECK: @get
+ %A = load i32 addrspace(1) * @G
+ %C = icmp slt i32 %A, 2
+ ret i1 %C
+; CHECK: ret i1 true
}
+