brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 2e99394 Raw
65 lines · plain
1target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"2target triple = "x86_64-grtev4-linux-gnu"3 4%struct.A = type { ptr }5%struct.B = type { ptr }6 7@_ZTV1B = linkonce_odr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr undef, ptr @_ZN1B1fEi, ptr @_ZN1B1nEi] }, !type !08 9$test = comdat any10$testb = comdat any11 12define linkonce_odr i32 @test(ptr %obj, i32 %a) comdat {13entry:14  %vtable5 = load ptr, ptr %obj15 16  %0 = tail call { ptr, i1 } @llvm.type.checked.load(ptr %vtable5, i32 8, metadata !"_ZTS1A")17  %1 = extractvalue { ptr, i1 } %0, 118  br i1 %1, label %cont, label %trap19 20trap:21  tail call void @llvm.trap()22  unreachable23 24cont:25  %2 = extractvalue { ptr, i1 } %0, 026 27  %call = tail call i32 %2(ptr nonnull %obj, i32 %a)28 29  ret i32 %call30}31 32define linkonce_odr i32 @testb(ptr %obj, i32 %a) comdat {33entry:34  %vtable5 = load ptr, ptr %obj35 36  %0 = tail call { ptr, i1 } @llvm.type.checked.load(ptr %vtable5, i32 0, metadata !"_ZTS1A")37  %1 = extractvalue { ptr, i1 } %0, 138  br i1 %1, label %cont, label %trap39 40trap:41  tail call void @llvm.trap()42  unreachable43 44cont:45  %2 = extractvalue { ptr, i1 } %0, 046 47  %call = tail call i32 %2(ptr nonnull %obj, i32 %a)48 49  ret i32 %call50}51 52declare { ptr, i1 } @llvm.type.checked.load(ptr, i32, metadata)53declare void @llvm.trap()54 55define internal i32 @_ZN1B1fEi(ptr %this, i32 %a) {56entry:57   ret i32 058}59define internal i32 @_ZN1B1nEi(ptr %this, i32 %a) {60entry:61   ret i32 062}63 64!0 = !{i64 16, !"_ZTS1B"}65