brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · df5b007 Raw
74 lines · cpp
1// Simple functions2// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o -  | FileCheck %s3 4void empty() { }5// CHECK: define{{.*}} void @_Z5emptyv()6// CHECK:   ret void7 8void voidret() { return; }9// CHECK: define{{.*}} void @_Z7voidretv()10// CHECK:   ret void11 12int intfunc() { return 42; }13// CHECK: define{{.*}} i32 @_Z7intfuncv()14// CHECK:   %[[RV:.*]] = alloca i32, i64 1, align 415// CHECK:   store i32 42, ptr %[[RV]], align 416// CHECK:   %[[R:.*]] = load i32, ptr %[[RV]], align 417// CHECK:   ret i32 %[[R]]18 19int scopes() {20  {21    {22      return 99;23    }24  }25}26// CHECK: define{{.*}} i32 @_Z6scopesv(){{.*}} {27// CHECK:   %[[RV:.*]] = alloca i32, i64 1, align 428// CHECK:   br label %[[LABEL1:.*]]29// CHECK: [[LABEL1]]:30// CHECK:   br label %[[LABEL2:.*]]31// CHECK: [[LABEL2]]:32// CHECK:   store i32 99, ptr %[[RV]], align 433// CHECK:   %[[R:.*]] = load i32, ptr %[[RV]], align 434// CHECK:   ret i32 %[[R]]35// CHECK: [[LABEL3:.*]]:36// CHECK:   br label %[[LABEL4:.*]]37// CHECK: [[LABEL4]]:38// CHECK:   call void @llvm.trap()39// CHECK:   unreachable40// CHECK: }41 42long longfunc() { return 42l; }43// CHECK: define{{.*}} i64 @_Z8longfuncv(){{.*}} {44// CHECK:   %[[RV:.*]] = alloca i64, i64 1, align 845// CHECK:   store i64 42, ptr %[[RV]], align 846// CHECK:   %[[R:.*]] = load i64, ptr %[[RV]], align 847// CHECK:   ret i64 %[[R]]48// CHECK: }49 50unsigned unsignedfunc() { return 42u; }51// CHECK: define{{.*}} i32 @_Z12unsignedfuncv(){{.*}} {52// CHECK:   %[[RV:.*]] = alloca i32, i64 1, align 453// CHECK:   store i32 42, ptr %[[RV]], align 454// CHECK:   %[[R:.*]] = load i32, ptr %[[RV]], align 455// CHECK:   ret i32 %[[R]]56// CHECK: }57 58unsigned long long ullfunc() { return 42ull; }59// CHECK: define{{.*}} i64 @_Z7ullfuncv(){{.*}} {60// CHECK:   %[[RV:.*]] = alloca i64, i64 1, align 861// CHECK:   store i64 42, ptr %[[RV]], align 862// CHECK:   %[[R:.*]] = load i64, ptr %[[RV]], align 863// CHECK:   ret i64 %[[R]]64// CHECK: }65 66bool boolfunc() { return true; }67// CHECK: define{{.*}} i1 @_Z8boolfuncv(){{.*}} {68// CHECK:   %[[RV:.*]] = alloca i8, i64 1, align 169// CHECK:   store i8 1, ptr %[[RV]], align 170// CHECK:   %[[R8:.*]] = load i8, ptr %[[RV]], align 171// CHECK:   %[[R:.*]] = trunc i8 %[[R8]] to i172// CHECK:   ret i1 %[[R]]73// CHECK: }74