1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare void @bar(i32*) 4*9880d681SAndroid Build Coastguard Workerdeclare void @baz(i32*) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test_load_combine_metadata( 7*9880d681SAndroid Build Coastguard Worker; Check that dereferenceable metadata is combined 8*9880d681SAndroid Build Coastguard Worker; CHECK: load i32*, i32** %p 9*9880d681SAndroid Build Coastguard Worker; CHECK-SAME: !dereferenceable ![[DEREF:[0-9]+]] 10*9880d681SAndroid Build Coastguard Worker; CHECK: t: 11*9880d681SAndroid Build Coastguard Worker; CHECK: f: 12*9880d681SAndroid Build Coastguard Workerdefine void @test_load_combine_metadata(i1 %c, i32** %p) { 13*9880d681SAndroid Build Coastguard Worker br i1 %c, label %t, label %f 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workert: 16*9880d681SAndroid Build Coastguard Worker %v1 = load i32*, i32** %p, !dereferenceable !0 17*9880d681SAndroid Build Coastguard Worker call void @bar(i32* %v1) 18*9880d681SAndroid Build Coastguard Worker br label %cont 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerf: 21*9880d681SAndroid Build Coastguard Worker %v2 = load i32*, i32** %p, !dereferenceable !1 22*9880d681SAndroid Build Coastguard Worker call void @baz(i32* %v2) 23*9880d681SAndroid Build Coastguard Worker br label %cont 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workercont: 26*9880d681SAndroid Build Coastguard Worker ret void 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK: ![[DEREF]] = !{i64 8} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker!0 = !{i64 8} 32*9880d681SAndroid Build Coastguard Worker!1 = !{i64 16} 33