1 ; RUN: opt -instcombine -S < %s | FileCheck %s
3 define i32 @test_load_cast_combine_tbaa(float* %ptr) {
4 ; Ensure (cast (load (...))) -> (load (cast (...))) preserves TBAA.
5 ; CHECK-LABEL: @test_load_cast_combine_tbaa(
6 ; CHECK: load i32* %{{.*}}, !tbaa !0
8 %l = load float* %ptr, !tbaa !0
9 %c = bitcast float %l to i32
13 define i32 @test_load_cast_combine_noalias(float* %ptr) {
14 ; Ensure (cast (load (...))) -> (load (cast (...))) preserves no-alias metadata.
15 ; CHECK-LABEL: @test_load_cast_combine_noalias(
16 ; CHECK: load i32* %{{.*}}, !alias.scope !2, !noalias !1
18 %l = load float* %ptr, !alias.scope !2, !noalias !1
19 %c = bitcast float %l to i32
23 !0 = metadata !{ metadata !1, metadata !1, i64 0 }
24 !1 = metadata !{ metadata !1 }
25 !2 = metadata !{ metadata !2, metadata !1 }