brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 7c8fa8d Raw
24 lines · plain
1// RUN: cir-opt %s --verify-roundtrip | FileCheck %s2 3// Test the parsing and printing of a constructor that uses a vtable addess_point op.4 5!u32i = !cir.int<u, 32>6!u8i = !cir.int<u, 8>7!rec_anon_struct = !cir.record<struct  {!cir.array<!cir.ptr<!u8i> x 4>}>8!rec_S = !cir.record<struct "S" {!cir.vptr}>9 10module {11  cir.global "private" external @_ZTV1S : !rec_anon_struct {alignment = 8 : i64}12  cir.func @_ZN1SC2Ev(%arg0: !cir.ptr<!rec_S>) {13    %0 = cir.alloca !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>, ["this", init] {alignment = 8 : i64}14    cir.store %arg0, %0 : !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>15    %1 = cir.load %0 : !cir.ptr<!cir.ptr<!rec_S>>, !cir.ptr<!rec_S>16    %2 = cir.vtable.address_point(@_ZTV1S, address_point = <index = 0, offset = 2>) : !cir.vptr17    %3 = cir.cast bitcast %1 : !cir.ptr<!rec_S> -> !cir.ptr<!cir.vptr>18    cir.store align(8) %2, %3 : !cir.vptr, !cir.ptr<!cir.vptr>19    cir.return20  }21}22 23// CHECK: cir.vtable.address_point(@_ZTV1S, address_point = <index = 0, offset = 2>) : !cir.vptr24