1*eb206e9eSAndrea Faulds// UNSUPPORTED: target=aarch64{{.*}}, target=arm64{{.*}} 2*eb206e9eSAndrea Faulds// RUN: mlir-runner %s -e entry -entry-point-result=void \ 3*eb206e9eSAndrea Faulds// RUN: -shared-libs=%mlir_c_runner_utils | \ 4*eb206e9eSAndrea Faulds// RUN: FileCheck %s 5*eb206e9eSAndrea Faulds 6*eb206e9eSAndrea Faulds// Test that the `ctor` executes before `entry` and that `dtor` executes last. 7*eb206e9eSAndrea Fauldsmodule { 8*eb206e9eSAndrea Faulds llvm.func @printNewline() 9*eb206e9eSAndrea Faulds llvm.func @printI64(i64) 10*eb206e9eSAndrea Faulds llvm.mlir.global_ctors {ctors = [@ctor], priorities = [0 : i32]} 11*eb206e9eSAndrea Faulds llvm.mlir.global_dtors {dtors = [@dtor], priorities = [0 : i32]} 12*eb206e9eSAndrea Faulds llvm.func @ctor() { 13*eb206e9eSAndrea Faulds %0 = llvm.mlir.constant(1 : i64) : i64 14*eb206e9eSAndrea Faulds llvm.call @printI64(%0) : (i64) -> () 15*eb206e9eSAndrea Faulds llvm.call @printNewline() : () -> () 16*eb206e9eSAndrea Faulds // CHECK: 1 17*eb206e9eSAndrea Faulds llvm.return 18*eb206e9eSAndrea Faulds } 19*eb206e9eSAndrea Faulds llvm.func @entry() { 20*eb206e9eSAndrea Faulds %0 = llvm.mlir.constant(2 : i64) : i64 21*eb206e9eSAndrea Faulds llvm.call @printI64(%0) : (i64) -> () 22*eb206e9eSAndrea Faulds llvm.call @printNewline() : () -> () 23*eb206e9eSAndrea Faulds // CHECK: 2 24*eb206e9eSAndrea Faulds llvm.return 25*eb206e9eSAndrea Faulds } 26*eb206e9eSAndrea Faulds llvm.func @dtor() { 27*eb206e9eSAndrea Faulds %0 = llvm.mlir.constant(3 : i64) : i64 28*eb206e9eSAndrea Faulds llvm.call @printI64(%0) : (i64) -> () 29*eb206e9eSAndrea Faulds llvm.call @printNewline() : () -> () 30*eb206e9eSAndrea Faulds // CHECK: 3 31*eb206e9eSAndrea Faulds llvm.return 32*eb206e9eSAndrea Faulds } 33*eb206e9eSAndrea Faulds} 34