diff --git a/llvm/test/Transforms/InstCombine/load-store-forward.ll b/llvm/test/Transforms/InstCombine/load-store-forward.ll index eee47e87a1ca3..618e67ed0c8ec 100644 --- a/llvm/test/Transforms/InstCombine/load-store-forward.ll +++ b/llvm/test/Transforms/InstCombine/load-store-forward.ll @@ -289,3 +289,25 @@ entry: %2 = load , * %1, align 16 ret %2 } + +define i8 @load_i8_store_i1(i1* %a) { +; CHECK-LABEL: @load_i8_store_i1( +; CHECK-NEXT: store i1 true, i1* [[A:%.*]], align 1 +; CHECK-NEXT: ret i8 -1 +; + store i1 true, i1* %a + %a.i8 = bitcast i1* %a to i8* + %v = load i8, i8* %a.i8 + ret i8 %v +} + +define i1 @load_i1_store_i8(i8* %a) { +; CHECK-LABEL: @load_i1_store_i8( +; CHECK-NEXT: store i8 1, i8* [[A:%.*]], align 1 +; CHECK-NEXT: ret i1 true +; + store i8 1, i8* %a + %a.i1 = bitcast i8* %a to i1* + %v = load i1, i1* %a.i1 + ret i1 %v +} diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/loads.ll b/llvm/test/Transforms/InstSimplify/ConstProp/loads.ll index 58701bf5a63b5..586a431b81c9d 100644 --- a/llvm/test/Transforms/InstSimplify/ConstProp/loads.ll +++ b/llvm/test/Transforms/InstSimplify/ConstProp/loads.ll @@ -402,3 +402,13 @@ define i64 addrspace(2)* @load_non_integral_ptr_from_i8_data() { %v = load i64 addrspace(2)*, i64 addrspace(2)** bitcast ([16 x i8]* @g_i8_data to i64 addrspace(2)**) ret i64 addrspace(2)* %v } + +@g_i1 = constant i1 true + +define i8 @load_i8_from_i1() { +; CHECK-LABEL: @load_i8_from_i1( +; CHECK-NEXT: ret i8 -1 +; + %v = load i8, i8* bitcast (i1* @g_i1 to i8*) + ret i8 %v +}