brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 8894757 Raw
96 lines · cpp
1// Simple functions2// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o -  | FileCheck %s3 4void empty() { }5// CHECK: cir.func{{.*}} @_Z5emptyv()6// CHECK:   cir.return7// CHECK: }8 9void voidret() { return; }10// CHECK: cir.func{{.*}} @_Z7voidretv()11// CHECK:   cir.return12// CHECK: }13 14int intfunc() { return 42; }15// CHECK: cir.func{{.*}} @_Z7intfuncv() -> !s32i16// CHECK:   %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}17// CHECK:   %1 = cir.const #cir.int<42> : !s32i18// CHECK:   cir.store %1, %0 : !s32i, !cir.ptr<!s32i>19// CHECK:   %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i20// CHECK:   cir.return %2 : !s32i21// CHECK: }22 23int scopes() {24  {25    {26      return 99;27    }28  }29}30// CHECK: cir.func{{.*}} @_Z6scopesv() -> !s32i31// CHECK:   %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64}32// CHECK:   cir.scope {33// CHECK:     cir.scope {34// CHECK:       %1 = cir.const #cir.int<99> : !s32i35// CHECK:       cir.store %1, %0 : !s32i, !cir.ptr<!s32i>36// CHECK:       %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i37// CHECK:       cir.return %2 : !s32i38// CHECK:     }39// CHECK:   }40// CHECK:   cir.trap41// CHECK: }42 43long longfunc() { return 42l; }44// CHECK: cir.func{{.*}} @_Z8longfuncv() -> !s64i45// CHECK:   %0 = cir.alloca !s64i, !cir.ptr<!s64i>, ["__retval"] {alignment = 8 : i64}46// CHECK:   %1 = cir.const #cir.int<42> : !s64i47// CHECK:   cir.store %1, %0 : !s64i, !cir.ptr<!s64i>48// CHECK:   %2 = cir.load %0 : !cir.ptr<!s64i>, !s64i49// CHECK:   cir.return %2 : !s64i50// CHECK: }51 52unsigned unsignedfunc() { return 42u; }53// CHECK: cir.func{{.*}} @_Z12unsignedfuncv() -> !u32i54// CHECK:   %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["__retval"] {alignment = 4 : i64}55// CHECK:   %1 = cir.const #cir.int<42> : !u32i56// CHECK:   cir.store %1, %0 : !u32i, !cir.ptr<!u32i>57// CHECK:   %2 = cir.load %0 : !cir.ptr<!u32i>, !u32i58// CHECK:   cir.return %2 : !u32i59// CHECK: }60 61unsigned long long ullfunc() { return 42ull; }62// CHECK: cir.func{{.*}} @_Z7ullfuncv() -> !u64i63// CHECK:   %0 = cir.alloca !u64i, !cir.ptr<!u64i>, ["__retval"] {alignment = 8 : i64}64// CHECK:   %1 = cir.const #cir.int<42> : !u64i65// CHECK:   cir.store %1, %0 : !u64i, !cir.ptr<!u64i>66// CHECK:   %2 = cir.load %0 : !cir.ptr<!u64i>, !u64i67// CHECK:   cir.return %2 : !u64i68// CHECK: }69 70bool boolfunc() { return true; }71// CHECK: cir.func{{.*}} @_Z8boolfuncv() -> !cir.bool72// CHECK:   %0 = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["__retval"] {alignment = 1 : i64}73// CHECK:   %1 = cir.const #true74// CHECK:   cir.store %1, %0 : !cir.bool, !cir.ptr<!cir.bool>75// CHECK:   %2 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool76// CHECK:   cir.return %2 : !cir.bool77// CHECK: }78 79float floatfunc() { return 42.42f; }80// CHECK: cir.func{{.*}} @_Z9floatfuncv() -> !cir.float81// CHECK:   %0 = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["__retval"] {alignment = 4 : i64}82// CHECK:   %1 = cir.const #cir.fp<4.24283// CHECK:   cir.store %1, %0 : !cir.float, !cir.ptr<!cir.float>84// CHECK:   %2 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float85// CHECK:   cir.return %2 : !cir.float86// CHECK: }87 88double doublefunc() { return 42.42; }89// CHECK: cir.func{{.*}} @_Z10doublefuncv() -> !cir.double90// CHECK:   %0 = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["__retval"] {alignment = 8 : i64}91// CHECK:   %1 = cir.const #cir.fp<4.24292// CHECK:   cir.store %1, %0 : !cir.double, !cir.ptr<!cir.double>93// CHECK:   %2 = cir.load %0 : !cir.ptr<!cir.double>, !cir.double94// CHECK:   cir.return %2 : !cir.double95// CHECK: }96