blob: 6e91898a3b4527458220f28e068459a21d5ff945 [file]
// RUN: cir-opt %s --verify-roundtrip | FileCheck %s
!s32i = !cir.int<s, 32>
!s64i = !cir.int<s, 64>
!u32i = !cir.int<u, 32>
!u64i = !cir.int<u, 64>
module {
// void empty() { }
cir.func @empty() {
cir.return
}
// CHECK: cir.func{{.*}} @empty() {
// CHECK: cir.return
// CHECK: }
// void empty() { }
cir.func no_proto @noProto() {
cir.return
}
// CHECK: cir.func no_proto @noProto() {
// CHECK: cir.return
// CHECK: }
// void voidret() { return; }
cir.func @voidret() {
cir.return
}
// CHECK: cir.func{{.*}} @voidret() {
// CHECK: cir.return
// CHECK: }
// int intfunc() { return 42; }
cir.func @intfunc() -> !s32i {
%0 = cir.const #cir.int<42> : !s32i
cir.return %0 : !s32i
}
// CHECK: cir.func{{.*}} @intfunc() -> !s32i {
// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !s32i
// CHECK: cir.return %[[VAL]] : !s32i
// CHECK: }
// Should print/parse function aliases.
cir.func @a_empty() alias(@empty)
// CHECK: cir.func @a_empty() alias(@empty)
// int scopes() {
// {
// {
// return 99;
// }
// }
//}
cir.func @scopes() -> !s32i {
cir.scope {
cir.scope {
%0 = cir.const #cir.int<99> : !s32i
cir.return %0 : !s32i
}
}
cir.trap
}
// CHECK: cir.func{{.*}} @scopes() -> !s32i {
// CHECK: cir.scope {
// CHECK: cir.scope {
// CHECK: %[[VAL:.*]] = cir.const #cir.int<99> : !s32i
// CHECK: cir.return %[[VAL]] : !s32i
// CHECK: }
// CHECK: }
// CHECK: cir.trap
// CHECK: }
// long longfunc() { return 42l; }
cir.func @longfunc() -> !s64i {
%0 = cir.const #cir.int<42> : !s64i
cir.return %0 : !s64i
}
// CHECK: cir.func{{.*}} @longfunc() -> !s64i
// CHECK: %0 = cir.const #cir.int<42> : !s64i
// CHECK: cir.return %0 : !s64i
// CHECK: }
// unsigned unsignedfunc() { return 42u; }
cir.func @unsignedfunc() -> !u32i {
%0 = cir.const #cir.int<42> : !u32i
cir.return %0 : !u32i
}
// CHECK: cir.func{{.*}} @unsignedfunc() -> !u32i
// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !u32i
// CHECK: cir.return %[[VAL]] : !u32i
// CHECK: }
// unsigned long long ullfunc() { return 42ull; }
cir.func @ullfunc() -> !u64i {
%0 = cir.const #cir.int<42> : !u64i
cir.return %0 : !u64i
}
// CHECK: cir.func{{.*}} @ullfunc() -> !u64i
// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !u64i
// CHECK: cir.return %[[VAL:.*]] : !u64i
// CHECK: }
cir.func coroutine @coro() {
cir.return
}
// CHECK: cir.func{{.*}} coroutine @coro()
cir.func builtin @builtin() {
cir.return
}
// CHECK: cir.func{{.*}} builtin @builtin()
cir.func @global_ctor_func() global_ctor {
cir.return
}
// CHECK: cir.func @global_ctor_func() global_ctor {
// CHECK: cir.return
// CHECK: }
cir.func @global_ctor_with_priority() global_ctor(200) {
cir.return
}
// CHECK: cir.func @global_ctor_with_priority() global_ctor(200) {
// CHECK: cir.return
// CHECK: }
cir.func @global_dtor_func() global_dtor {
cir.return
}
// CHECK: cir.func @global_dtor_func() global_dtor {
// CHECK: cir.return
// CHECK: }
cir.func @global_dtor_with_priority() global_dtor(201) {
cir.return
}
// CHECK: cir.func @global_dtor_with_priority() global_dtor(201) {
// CHECK: cir.return
// CHECK: }
}