https://github.com/andykaylor updated https://github.com/llvm/llvm-project/pull/131912
>From a635a7d62251eb1b33218d5ba9fa34ad7a8f5567 Mon Sep 17 00:00:00 2001 From: Andy Kaylor <akay...@nvidia.com> Date: Tue, 18 Mar 2025 13:48:03 -0700 Subject: [PATCH 1/2] [CIR] Upstream support for type aliases and clean up tests CIR uses aliases for standard integer types and void. This change adds upstream support for those aliases and updates existing tests. This also updates a few tests that were out of step with the canonicalize pass running. --- clang/lib/CIR/Dialect/IR/CIRDialect.cpp | 14 +++ clang/test/CIR/CodeGen/array.cpp | 28 +++--- clang/test/CIR/CodeGen/basic.c | 60 +++++------- clang/test/CIR/CodeGen/basic.cpp | 64 ++++++------- clang/test/CIR/CodeGen/cast.cpp | 42 ++++---- clang/test/CIR/CodeGen/local-vars.cpp | 28 +++--- .../CIR/CodeGen/unary-expr-or-type-trait.cpp | 28 +++--- clang/test/CIR/CodeGen/unary.cpp | 54 +++++------ clang/test/CIR/IR/array.cir | 62 ++++++------ clang/test/CIR/IR/cast.cir | 8 +- clang/test/CIR/IR/func.cir | 65 +++++++------ clang/test/CIR/IR/global-var-linkage.cir | 22 +++-- clang/test/CIR/IR/global.cir | 96 +++++++++++-------- clang/test/CIR/Lowering/func-simple.cpp | 8 +- clang/test/CIR/Transforms/canonicalize.cir | 54 ++++++----- clang/test/CIR/Transforms/scope.cir | 46 ++++----- clang/test/CIR/func-simple.cpp | 78 ++++++--------- clang/test/CIR/global-var-simple.cpp | 44 ++++----- clang/test/CIR/mlprint.c | 2 +- clang/test/CMakeLists.txt | 3 +- 20 files changed, 408 insertions(+), 398 deletions(-) diff --git a/clang/lib/CIR/Dialect/IR/CIRDialect.cpp b/clang/lib/CIR/Dialect/IR/CIRDialect.cpp index e3872bf73f750..e94aba0d7ac4a 100644 --- a/clang/lib/CIR/Dialect/IR/CIRDialect.cpp +++ b/clang/lib/CIR/Dialect/IR/CIRDialect.cpp @@ -31,6 +31,20 @@ struct CIROpAsmDialectInterface : public OpAsmDialectInterface { using OpAsmDialectInterface::OpAsmDialectInterface; AliasResult getAlias(Type type, raw_ostream &os) const final { + if (auto intType = dyn_cast<cir::IntType>(type)) { + // We only provide alias for standard integer types (i.e. integer types + // whose width is a power of 2 and at least 8). + unsigned width = intType.getWidth(); + if (width < 8 || !llvm::isPowerOf2_32(width)) + return AliasResult::NoAlias; + os << intType.getAlias(); + return AliasResult::OverridableAlias; + } + if (auto voidType = dyn_cast<cir::VoidType>(type)) { + os << voidType.getAlias(); + return AliasResult::OverridableAlias; + } + return AliasResult::NoAlias; } diff --git a/clang/test/CIR/CodeGen/array.cpp b/clang/test/CIR/CodeGen/array.cpp index 294c4af822c44..a59880352e050 100644 --- a/clang/test/CIR/CodeGen/array.cpp +++ b/clang/test/CIR/CodeGen/array.cpp @@ -1,41 +1,41 @@ // RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - 2>&1 | FileCheck %s int a[10]; -// CHECK: cir.global external @a : !cir.array<!cir.int<s, 32> x 10> +// CHECK: cir.global external @a : !cir.array<!s32i x 10> int aa[10][5]; -// CHECK: cir.global external @aa : !cir.array<!cir.array<!cir.int<s, 32> x 5> x 10> +// CHECK: cir.global external @aa : !cir.array<!cir.array<!s32i x 5> x 10> extern int b[10]; -// CHECK: cir.global external @b : !cir.array<!cir.int<s, 32> x 10> +// CHECK: cir.global external @b : !cir.array<!s32i x 10> extern int bb[10][5]; -// CHECK: cir.global external @bb : !cir.array<!cir.array<!cir.int<s, 32> x 5> x 10> +// CHECK: cir.global external @bb : !cir.array<!cir.array<!s32i x 5> x 10> int c[10] = {}; -// CHECK: cir.global external @c = #cir.zero : !cir.array<!cir.int<s, 32> x 10> +// CHECK: cir.global external @c = #cir.zero : !cir.array<!s32i x 10> int d[3] = {1, 2, 3}; -// CHECK: cir.global external @d = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>, #cir.int<3> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 3> +// CHECK: cir.global external @d = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> int dd[3][2] = {{1, 2}, {3, 4}, {5, 6}}; -// CHECK: cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<3> : !cir.int<s, 32>, #cir.int<4> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<5> : !cir.int<s, 32>, #cir.int<6> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>]> : !cir.array<!cir.array<!cir.int<s, 32> x 2> x 3> +// CHECK: cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<5> : !s32i, #cir.int<6> : !s32i]> : !cir.array<!s32i x 2>]> : !cir.array<!cir.array<!s32i x 2> x 3> int e[10] = {1, 2}; -// CHECK: cir.global external @e = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>], trailing_zeros> : !cir.array<!cir.int<s, 32> x 10> +// CHECK: cir.global external @e = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 10> int f[5] = {1, 2}; -// CHECK: cir.global external @f = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>, #cir.int<0> : !cir.int<s, 32>, #cir.int<0> : !cir.int<s, 32>, #cir.int<0> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 5> +// CHECK: cir.global external @f = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<0> : !s32i, #cir.int<0> : !s32i, #cir.int<0> : !s32i]> : !cir.array<!s32i x 5> void func() { int l[10]; - // CHECK: %[[ARR:.*]] = cir.alloca !cir.array<!cir.int<s, 32> x 10>, !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, ["l"] + // CHECK: %[[ARR:.*]] = cir.alloca !cir.array<!s32i x 10>, !cir.ptr<!cir.array<!s32i x 10>>, ["l"] } void func2(int p[10]) {} -// CHECK: cir.func @func2(%arg0: !cir.ptr<!cir.int<s, 32>> -// CHECK: cir.alloca !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>>, ["p", init] +// CHECK: cir.func @func2(%arg0: !cir.ptr<!s32i> +// CHECK: cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["p", init] void func3(int pp[10][5]) {} -// CHECK: cir.func @func3(%arg0: !cir.ptr<!cir.array<!cir.int<s, 32> x 5>> -// CHECK: cir.alloca !cir.ptr<!cir.array<!cir.int<s, 32> x 5>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 5>>> +// CHECK: cir.func @func3(%arg0: !cir.ptr<!cir.array<!s32i x 5>> +// CHECK: cir.alloca !cir.ptr<!cir.array<!s32i x 5>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 5>>> diff --git a/clang/test/CIR/CodeGen/basic.c b/clang/test/CIR/CodeGen/basic.c index 01e58398a6438..673ff256c22af 100644 --- a/clang/test/CIR/CodeGen/basic.c +++ b/clang/test/CIR/CodeGen/basic.c @@ -13,17 +13,15 @@ int f1(int i) { } // CIR: module -// CIR-NEXT: cir.func @f1(%arg0: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32> -// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64} -// CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CIR-NEXT: cir.br ^[[BB1:[^ ]+]] -// CIR-NEXT: ^[[BB1]]: -// CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32> +// CIR-NEXT: cir.func @f1(%arg0: !s32i loc({{.*}})) -> !s32i +// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64} +// CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !s32i, !cir.ptr<!s32i> +// CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: cir.return %[[R]] : !s32i // LLVM: define i32 @f1(i32 %[[IP:.*]]) // LLVM-NEXT: %[[I_PTR:.*]] = alloca i32, i64 1, align 4 @@ -32,8 +30,6 @@ int f1(int i) { // LLVM-NEXT: %[[I_IGNORED:.*]] = load i32, ptr %[[I_PTR]], align 4 // LLVM-NEXT: %[[I:.*]] = load i32, ptr %[[I_PTR]], align 4 // LLVM-NEXT: store i32 %[[I]], ptr %[[RV]], align 4 -// LLVM-NEXT: br label %[[BB1:.*]] -// LLVM: [[BB1]]: // LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4 // LLVM-NEXT: ret i32 %[[R]] @@ -47,20 +43,16 @@ int f1(int i) { int f2(void) { return 3; } -// CIR: cir.func @f2() -> !cir.int<s, 32> -// CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32> -// CIR-NEXT: cir.store %[[THREE]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CIR-NEXT: cir.br ^[[BB1:[^ ]+]] -// CIR-NEXT: ^[[BB1]]: -// CIR-NEXT: %[[R:.*]] = cir.load %0 : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32> +// CIR: cir.func @f2() -> !s32i +// CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i +// CIR-NEXT: cir.store %[[THREE]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CIR-NEXT: %[[R:.*]] = cir.load %0 : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: cir.return %[[R]] : !s32i // LLVM: define i32 @f2() // LLVM-NEXT: %[[RV:.*]] = alloca i32, i64 1, align 4 // LLVM-NEXT: store i32 3, ptr %[[RV]], align 4 -// LLVM-NEXT: br label %[[BB1:.*]] -// LLVM: [[BB1]]: // LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4 // LLVM-NEXT: ret i32 %[[R]] @@ -73,17 +65,15 @@ int f3(void) { return i; } -// CIR: cir.func @f3() -> !cir.int<s, 32> -// CIR-NEXT: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64} -// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32> -// CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CIR-NEXT: cir.br ^[[BB1:[^ ]+]] -// CIR-NEXT: ^[[BB1]]: -// CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CIR-NEXT: cir.return %[[R]] : !cir.int<s, 32> +// CIR: cir.func @f3() -> !s32i +// CIR-NEXT: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64} +// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i +// CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i> +// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CIR-NEXT: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CIR-NEXT: cir.return %[[R]] : !s32i // LLVM: define i32 @f3() // LLVM-NEXT: %[[RV:.*]] = alloca i32, i64 1, align 4 @@ -91,8 +81,6 @@ int f3(void) { // LLVM-NEXT: store i32 3, ptr %[[I_PTR]], align 4 // LLVM-NEXT: %[[I:.*]] = load i32, ptr %[[I_PTR]], align 4 // LLVM-NEXT: store i32 %[[I]], ptr %[[RV]], align 4 -// LLVM-NEXT: br label %[[BB1:.*]] -// LLVM: [[BB1]]: // LLVM-NEXT: %[[R:.*]] = load i32, ptr %[[RV]], align 4 // LLVM-NEXT: ret i32 %[[R]] diff --git a/clang/test/CIR/CodeGen/basic.cpp b/clang/test/CIR/CodeGen/basic.cpp index 04687c340843a..6918825bd76a7 100644 --- a/clang/test/CIR/CodeGen/basic.cpp +++ b/clang/test/CIR/CodeGen/basic.cpp @@ -6,51 +6,51 @@ int f1() { } // CHECK: module -// CHECK: cir.func @f1() -> !cir.int<s, 32> -// CHECK: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i"] {alignment = 4 : i64} -// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %[[R]] : !cir.int<s, 32> +// CHECK: cir.func @f1() -> !s32i +// CHECK: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i"] {alignment = 4 : i64} +// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %[[R]] : !s32i int f2() { const int i = 2; return i; } -// CHECK: cir.func @f2() -> !cir.int<s, 32> -// CHECK: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init, const] {alignment = 4 : i64} -// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !cir.int<s, 32> -// CHECK: cir.store %[[TWO]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.store %[[I]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %[[R]] : !cir.int<s, 32> +// CHECK: cir.func @f2() -> !s32i +// CHECK: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init, const] {alignment = 4 : i64} +// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !s32i +// CHECK: cir.store %[[TWO]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.store %[[I]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %[[R]] : !s32i int f3(int i) { return i; } -// CHECK: cir.func @f3(%[[ARG:.*]]: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32> -// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64} -// CHECK: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.store %[[ARG_VAL]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %[[R]] : !cir.int<s, 32> +// CHECK: cir.func @f3(%[[ARG:.*]]: !s32i loc({{.*}})) -> !s32i +// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64} +// CHECK: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.store %[[ARG_VAL]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %[[R]] : !s32i int f4(const int i) { return i; } -// CHECK: cir.func @f4(%[[ARG:.*]]: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32> -// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init, const] {alignment = 4 : i64} -// CHECK: %[[RV:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.store %[[ARG_VAL]], %[[RV]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %[[R]] : !cir.int<s, 32> +// CHECK: cir.func @f4(%[[ARG:.*]]: !s32i loc({{.*}})) -> !s32i +// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init, const] {alignment = 4 : i64} +// CHECK: %[[RV:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.store %[[ARG_VAL]], %[[RV]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[R:.*]] = cir.load %[[RV]] : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %[[R]] : !s32i diff --git a/clang/test/CIR/CodeGen/cast.cpp b/clang/test/CIR/CodeGen/cast.cpp index 4d9e364b3c186..ceae355a3ae1c 100644 --- a/clang/test/CIR/CodeGen/cast.cpp +++ b/clang/test/CIR/CodeGen/cast.cpp @@ -8,14 +8,14 @@ unsigned char cxxstaticcast_0(unsigned int x) { } // CIR: cir.func @cxxstaticcast_0 -// CIR: %[[XPTR:[0-9]+]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["x", init] {alignment = 4 : i64} -// CIR: %[[RV:[0-9]+]] = cir.alloca !cir.int<u, 8>, !cir.ptr<!cir.int<u, 8>>, ["__retval"] {alignment = 1 : i64} -// CIR: cir.store %arg0, %[[XPTR]] : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> -// CIR: %[[XVAL:[0-9]+]] = cir.load %[[XPTR]] : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> -// CIR: %[[CASTED:[0-9]+]] = cir.cast(integral, %[[XVAL]] : !cir.int<u, 32>), !cir.int<u, 8> -// CIR: cir.store %[[CASTED]], %[[RV]] : !cir.int<u, 8>, !cir.ptr<!cir.int<u, 8>> -// CIR: %[[R:[0-9]+]] = cir.load %1 : !cir.ptr<!cir.int<u, 8>>, !cir.int<u, 8> -// CIR: cir.return %[[R]] : !cir.int<u, 8> +// CIR: %[[XPTR:[0-9]+]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["x", init] {alignment = 4 : i64} +// CIR: %[[RV:[0-9]+]] = cir.alloca !u8i, !cir.ptr<!u8i>, ["__retval"] {alignment = 1 : i64} +// CIR: cir.store %arg0, %[[XPTR]] : !u32i, !cir.ptr<!u32i> +// CIR: %[[XVAL:[0-9]+]] = cir.load %[[XPTR]] : !cir.ptr<!u32i>, !u32i +// CIR: %[[CASTED:[0-9]+]] = cir.cast(integral, %[[XVAL]] : !u32i), !u8i +// CIR: cir.store %[[CASTED]], %[[RV]] : !u8i, !cir.ptr<!u8i> +// CIR: %[[R:[0-9]+]] = cir.load %1 : !cir.ptr<!u8i>, !u8i +// CIR: cir.return %[[R]] : !u8i // CIR: } // LLVM: define i8 @cxxstaticcast_0(i32 %{{[0-9]+}}) @@ -31,41 +31,41 @@ int cStyleCasts_0(unsigned x1, int x2, float x3, short x4, double x5) { // LLVM: define i32 @cStyleCasts_0 char a = (char)x1; // truncate - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 8> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s8i // LLVM: %{{[0-9]+}} = trunc i32 %{{[0-9]+}} to i8 short b = (short)x2; // truncate with sign - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<s, 16> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !s16i // LLVM: %{{[0-9]+}} = trunc i32 %{{[0-9]+}} to i16 long long c = (long long)x1; // zero extend - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 64> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s64i // LLVM: %{{[0-9]+}} = zext i32 %{{[0-9]+}} to i64 long long d = (long long)x2; // sign extend - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<s, 64> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !s64i // LLVM: %{{[0-9]+}} = sext i32 %{{[0-9]+}} to i64 unsigned ui = (unsigned)x2; // sign drop - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<u, 32> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !u32i int si = (int)x1; // sign add - // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 32> + // CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s32i bool ib; int bi = (int)ib; // bool to int - // CIR: %{{[0-9]+}} = cir.cast(bool_to_int, %{{[0-9]+}} : !cir.bool), !cir.int<s, 32> + // CIR: %{{[0-9]+}} = cir.cast(bool_to_int, %{{[0-9]+}} : !cir.bool), !s32i // LLVM: %{{[0-9]+}} = zext i1 %{{[0-9]+}} to i32 #ifdef CIR_ONLY bool b2 = x2; // int to bool - // CIR: %{{[0-9]+}} = cir.cast(int_to_bool, %{{[0-9]+}} : !cir.int<s, 32>), !cir.bool + // CIR: %{{[0-9]+}} = cir.cast(int_to_bool, %{{[0-9]+}} : !s32i), !cir.bool #endif #ifdef CIR_ONLY void *p; bool b3 = p; // ptr to bool - // CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %{{[0-9]+}} : !cir.ptr<!cir.void>), !cir.bool + // CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %{{[0-9]+}} : !cir.ptr<!void>), !cir.bool #endif float f; @@ -83,11 +83,11 @@ bool cptr(void *d) { return x; } -// CIR: cir.func @cptr(%arg0: !cir.ptr<!cir.void> -// CIR: %[[DPTR:[0-9]+]] = cir.alloca !cir.ptr<!cir.void>, !cir.ptr<!cir.ptr<!cir.void>>, ["d", init] {alignment = 8 : i64} +// CIR: cir.func @cptr(%arg0: !cir.ptr<!void> +// CIR: %[[DPTR:[0-9]+]] = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["d", init] {alignment = 8 : i64} -// CIR: %[[DVAL:[0-9]+]] = cir.load %[[DPTR]] : !cir.ptr<!cir.ptr<!cir.void>>, !cir.ptr<!cir.void> -// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %[[DVAL]] : !cir.ptr<!cir.void>), !cir.bool +// CIR: %[[DVAL:[0-9]+]] = cir.load %[[DPTR]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void> +// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %[[DVAL]] : !cir.ptr<!void>), !cir.bool #endif void should_not_cast() { diff --git a/clang/test/CIR/CodeGen/local-vars.cpp b/clang/test/CIR/CodeGen/local-vars.cpp index 14be8f4da902b..6e9f8c39b107f 100644 --- a/clang/test/CIR/CodeGen/local-vars.cpp +++ b/clang/test/CIR/CodeGen/local-vars.cpp @@ -22,27 +22,27 @@ void test() { // CHECK: module // CHECK: cir.func @test() -// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64} -// CHECK: %[[L_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["l", init] {alignment = 8 : i64} +// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64} +// CHECK: %[[L_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["l", init] {alignment = 8 : i64} // CHECK: %[[F_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["f", init] {alignment = 4 : i64} // CHECK: %[[D_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["d", init] {alignment = 8 : i64} // CHECK: %[[B1_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["b1", init] {alignment = 1 : i64} // CHECK: %[[B2_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["b2", init] {alignment = 1 : i64} -// CHECK: %[[CI_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["ci", init, const] {alignment = 4 : i64} -// CHECK: %[[CL_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["cl", init, const] {alignment = 8 : i64} +// CHECK: %[[CI_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["ci", init, const] {alignment = 4 : i64} +// CHECK: %[[CL_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["cl", init, const] {alignment = 8 : i64} // CHECK: %[[CF_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["cf", init, const] {alignment = 4 : i64} // CHECK: %[[CD_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["cd", init, const] {alignment = 8 : i64} // CHECK: %[[CB1_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["cb1", init, const] {alignment = 1 : i64} // CHECK: %[[CB2_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["cb2", init, const] {alignment = 1 : i64} -// CHECK: %[[UII_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["uii"] {alignment = 4 : i64} -// CHECK: %[[UIL_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["uil"] {alignment = 8 : i64} +// CHECK: %[[UII_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["uii"] {alignment = 4 : i64} +// CHECK: %[[UIL_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["uil"] {alignment = 8 : i64} // CHECK: %[[UIF_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["uif"] {alignment = 4 : i64} // CHECK: %[[UID_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["uid"] {alignment = 8 : i64} // CHECK: %[[UIB_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["uib"] {alignment = 1 : i64} -// CHECK: %[[ONE:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ONE]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !cir.int<s, 64> -// CHECK: cir.store %[[TWO]], %[[L_PTR]] : !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>> +// CHECK: %[[ONE:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ONE]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !s64i +// CHECK: cir.store %[[TWO]], %[[L_PTR]] : !s64i, !cir.ptr<!s64i> // CHECK: %[[THREE:.*]] = cir.const #cir.fp<3.0{{.*}}> : !cir.float // CHECK: cir.store %[[THREE]], %[[F_PTR]] : !cir.float, !cir.ptr<!cir.float> // CHECK: %[[FOUR:.*]] = cir.const #cir.fp<4.0{{.*}}> : !cir.double @@ -51,10 +51,10 @@ void test() { // CHECK: cir.store %[[TRUE]], %[[B1_PTR]] : !cir.bool, !cir.ptr<!cir.bool> // CHECK: %[[FALSE:.*]] = cir.const #false // CHECK: cir.store %[[FALSE]], %[[B2_PTR]] : !cir.bool, !cir.ptr<!cir.bool> -// CHECK: %[[ONEC:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ONEC]], %[[CI_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: %[[TWOC:.*]] = cir.const #cir.int<2> : !cir.int<s, 64> -// CHECK: cir.store %[[TWOC]], %[[CL_PTR]] : !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>> +// CHECK: %[[ONEC:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ONEC]], %[[CI_PTR]] : !s32i, !cir.ptr<!s32i> +// CHECK: %[[TWOC:.*]] = cir.const #cir.int<2> : !s64i +// CHECK: cir.store %[[TWOC]], %[[CL_PTR]] : !s64i, !cir.ptr<!s64i> // CHECK: %[[THREEC:.*]] = cir.const #cir.fp<3.0{{.*}}> : !cir.float // CHECK: cir.store %[[THREEC]], %[[CF_PTR]] : !cir.float, !cir.ptr<!cir.float> // CHECK: %[[FOURC:.*]] = cir.const #cir.fp<4.0{{.*}}> : !cir.double diff --git a/clang/test/CIR/CodeGen/unary-expr-or-type-trait.cpp b/clang/test/CIR/CodeGen/unary-expr-or-type-trait.cpp index fe5e5b434a3f1..071c52a0918e3 100644 --- a/clang/test/CIR/CodeGen/unary-expr-or-type-trait.cpp +++ b/clang/test/CIR/CodeGen/unary-expr-or-type-trait.cpp @@ -2,46 +2,46 @@ void foo() { unsigned long b = sizeof(bool); - // CHECK: cir.const #cir.int<1> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<1> : !u64i unsigned long i = sizeof(int); - // CHECK: cir.const #cir.int<4> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<4> : !u64i unsigned long l = sizeof(long); - // CHECK: cir.const #cir.int<8> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<8> : !u64i unsigned long f = sizeof(float); - // CHECK: cir.const #cir.int<4> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<4> : !u64i unsigned long d = sizeof(double); - // CHECK: cir.const #cir.int<8> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<8> : !u64i unsigned long iArr = sizeof(int[5]); - // CHECK: cir.const #cir.int<20> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<20> : !u64i unsigned long dArr = sizeof(double[5]); - // CHECK: cir.const #cir.int<40> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<40> : !u64i } void foo2() { unsigned long b = alignof(bool); - // CHECK: cir.const #cir.int<1> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<1> : !u64i unsigned long i = alignof(int); - // CHECK: cir.const #cir.int<4> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<4> : !u64i unsigned long l = alignof(long); - // CHECK: cir.const #cir.int<8> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<8> : !u64i unsigned long f = alignof(float); - // CHECK: cir.const #cir.int<4> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<4> : !u64i unsigned long d = alignof(double); - // CHECK: cir.const #cir.int<8> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<8> : !u64i unsigned long iArr = alignof(int[5]); - // CHECK: cir.const #cir.int<4> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<4> : !u64i unsigned long dArr = alignof(double[5]); - // CHECK: cir.const #cir.int<8> : !cir.int<u, 64> + // CHECK: cir.const #cir.int<8> : !u64i } diff --git a/clang/test/CIR/CodeGen/unary.cpp b/clang/test/CIR/CodeGen/unary.cpp index 924f4188199ab..3e041e14ce177 100644 --- a/clang/test/CIR/CodeGen/unary.cpp +++ b/clang/test/CIR/CodeGen/unary.cpp @@ -10,8 +10,8 @@ unsigned up0() { return +a; } -// CHECK: cir.func @up0() -> !cir.int<u, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] +// CHECK: cir.func @up0() -> !u32i +// CHECK: %[[A:.*]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[OUTPUT:.*]] = cir.unary(plus, %[[INPUT]]) @@ -31,8 +31,8 @@ unsigned um0() { return -a; } -// CHECK: cir.func @um0() -> !cir.int<u, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] +// CHECK: cir.func @um0() -> !u32i +// CHECK: %[[A:.*]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[OUTPUT:.*]] = cir.unary(minus, %[[INPUT]]) @@ -54,8 +54,8 @@ unsigned un0() { return ~a; // a ^ -1 , not } -// CHECK: cir.func @un0() -> !cir.int<u, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] +// CHECK: cir.func @un0() -> !u32i +// CHECK: %[[A:.*]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[OUTPUT:.*]] = cir.unary(not, %[[INPUT]]) @@ -78,10 +78,10 @@ int inc0() { return a; } -// CHECK: cir.func @inc0() -> !cir.int<s, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["a", init] -// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ATMP]], %[[A]] : !cir.int<s, 32> +// CHECK: cir.func @inc0() -> !s32i +// CHECK: %[[A:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] +// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ATMP]], %[[A]] : !s32i // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[INCREMENTED:.*]] = cir.unary(inc, %[[INPUT]]) // CHECK: cir.store %[[INCREMENTED]], %[[A]] @@ -106,10 +106,10 @@ int dec0() { return a; } -// CHECK: cir.func @dec0() -> !cir.int<s, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["a", init] -// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ATMP]], %[[A]] : !cir.int<s, 32> +// CHECK: cir.func @dec0() -> !s32i +// CHECK: %[[A:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] +// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ATMP]], %[[A]] : !s32i // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[INCREMENTED:.*]] = cir.unary(dec, %[[INPUT]]) // CHECK: cir.store %[[INCREMENTED]], %[[A]] @@ -134,10 +134,10 @@ int inc1() { return a; } -// CHECK: cir.func @inc1() -> !cir.int<s, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["a", init] -// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ATMP]], %[[A]] : !cir.int<s, 32> +// CHECK: cir.func @inc1() -> !s32i +// CHECK: %[[A:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] +// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ATMP]], %[[A]] : !s32i // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[INCREMENTED:.*]] = cir.unary(inc, %[[INPUT]]) // CHECK: cir.store %[[INCREMENTED]], %[[A]] @@ -162,10 +162,10 @@ int dec1() { return a; } -// CHECK: cir.func @dec1() -> !cir.int<s, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["a", init] -// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ATMP]], %[[A]] : !cir.int<s, 32> +// CHECK: cir.func @dec1() -> !s32i +// CHECK: %[[A:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] +// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ATMP]], %[[A]] : !s32i // CHECK: %[[INPUT:.*]] = cir.load %[[A]] // CHECK: %[[INCREMENTED:.*]] = cir.unary(dec, %[[INPUT]]) // CHECK: cir.store %[[INCREMENTED]], %[[A]] @@ -191,11 +191,11 @@ int inc2() { return b; } -// CHECK: cir.func @inc2() -> !cir.int<s, 32> -// CHECK: %[[A:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["a", init] -// CHECK: %[[B:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["b", init] -// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !cir.int<s, 32> -// CHECK: cir.store %[[ATMP]], %[[A]] : !cir.int<s, 32> +// CHECK: cir.func @inc2() -> !s32i +// CHECK: %[[A:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] +// CHECK: %[[B:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["b", init] +// CHECK: %[[ATMP:.*]] = cir.const #cir.int<1> : !s32i +// CHECK: cir.store %[[ATMP]], %[[A]] : !s32i // CHECK: %[[ATOB:.*]] = cir.load %[[A]] // CHECK: %[[INCREMENTED:.*]] = cir.unary(inc, %[[ATOB]]) // CHECK: cir.store %[[INCREMENTED]], %[[A]] diff --git a/clang/test/CIR/IR/array.cir b/clang/test/CIR/IR/array.cir index 790a988d9b9d8..5995c393730ae 100644 --- a/clang/test/CIR/IR/array.cir +++ b/clang/test/CIR/IR/array.cir @@ -1,62 +1,64 @@ // RUN: cir-opt %s | FileCheck %s +!s32i = !cir.int<s, 32> + module { -cir.global external @a : !cir.array<!cir.int<s, 32> x 10> -// CHECK: cir.global external @a : !cir.array<!cir.int<s, 32> x 10> +cir.global external @a : !cir.array<!s32i x 10> +// CHECK: cir.global external @a : !cir.array<!s32i x 10> -cir.global external @aa : !cir.array<!cir.array<!cir.int<s, 32> x 10> x 10> -// CHECK: cir.global external @aa : !cir.array<!cir.array<!cir.int<s, 32> x 10> x 10> +cir.global external @aa : !cir.array<!cir.array<!s32i x 10> x 10> +// CHECK: cir.global external @aa : !cir.array<!cir.array<!s32i x 10> x 10> -cir.global external @b : !cir.array<!cir.int<s, 32> x 10> -// CHECK: cir.global external @b : !cir.array<!cir.int<s, 32> x 10> +cir.global external @b : !cir.array<!s32i x 10> +// CHECK: cir.global external @b : !cir.array<!s32i x 10> -cir.global external @bb : !cir.array<!cir.array<!cir.int<s, 32> x 10> x 10> -// CHECK: cir.global external @bb : !cir.array<!cir.array<!cir.int<s, 32> x 10> x 10> +cir.global external @bb : !cir.array<!cir.array<!s32i x 10> x 10> +// CHECK: cir.global external @bb : !cir.array<!cir.array<!s32i x 10> x 10> -cir.global external @c = #cir.zero : !cir.array<!cir.int<s, 32> x 10> -// CHECK: cir.global external @c = #cir.zero : !cir.array<!cir.int<s, 32> x 10> +cir.global external @c = #cir.zero : !cir.array<!s32i x 10> +// CHECK: cir.global external @c = #cir.zero : !cir.array<!s32i x 10> -cir.global external @d = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>, #cir.int<3> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 3> -// CHECK: cir.global external @d = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>, #cir.int<3> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 3> +cir.global external @d = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> +// CHECK: cir.global external @d = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> -cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<3> : !cir.int<s, 32>, #cir.int<4> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<5> : !cir.int<s, 32>, #cir.int<6> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>]> : !cir.array<!cir.array<!cir.int<s, 32> x 2> x 3> -// CHECK: cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<3> : !cir.int<s, 32>, #cir.int<4> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>, #cir.const_array<[#cir.int<5> : !cir.int<s, 32>, #cir.int<6> : !cir.int<s, 32>]> : !cir.array<!cir.int<s, 32> x 2>]> : !cir.array<!cir.array<!cir.int<s, 32> x 2> x 3> +cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<5> : !s32i, #cir.int<6> : !s32i]> : !cir.array<!s32i x 2>]> : !cir.array<!cir.array<!s32i x 2> x 3> +// CHECK: cir.global external @dd = #cir.const_array<[#cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 2>, #cir.const_array<[#cir.int<5> : !s32i, #cir.int<6> : !s32i]> : !cir.array<!s32i x 2>]> : !cir.array<!cir.array<!s32i x 2> x 3> -cir.global external @e = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>], trailing_zeros> : !cir.array<!cir.int<s, 32> x 10> -// CHECK: cir.global external @e = #cir.const_array<[#cir.int<1> : !cir.int<s, 32>, #cir.int<2> : !cir.int<s, 32>], trailing_zeros> : !cir.array<!cir.int<s, 32> x 10> +cir.global external @e = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 10> +// CHECK: cir.global external @e = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 10> cir.func @func() { - %0 = cir.alloca !cir.array<!cir.int<s, 32> x 10>, !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, ["l"] {alignment = 4 : i64} + %0 = cir.alloca !cir.array<!s32i x 10>, !cir.ptr<!cir.array<!s32i x 10>>, ["l"] {alignment = 4 : i64} cir.return } // CHECK: cir.func @func() { -// CHECK: %0 = cir.alloca !cir.array<!cir.int<s, 32> x 10>, !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, ["l"] {alignment = 4 : i64} +// CHECK: %0 = cir.alloca !cir.array<!s32i x 10>, !cir.ptr<!cir.array<!s32i x 10>>, ["l"] {alignment = 4 : i64} // CHECK: cir.return // CHECK: } -cir.func @func2(%arg0: !cir.ptr<!cir.int<s, 32>>) { - %0 = cir.alloca !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>>, ["p", init] {alignment = 8 : i64} - cir.store %arg0, %0 : !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>> +cir.func @func2(%arg0: !cir.ptr<!s32i>) { + %0 = cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["p", init] {alignment = 8 : i64} + cir.store %arg0, %0 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>> cir.return } -// CHECK: cir.func @func2(%arg0: !cir.ptr<!cir.int<s, 32>>) { -// CHECK: %0 = cir.alloca !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>>, ["p", init] {alignment = 8 : i64} -// CHECK: cir.store %arg0, %0 : !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>> +// CHECK: cir.func @func2(%arg0: !cir.ptr<!s32i>) { +// CHECK: %0 = cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["p", init] {alignment = 8 : i64} +// CHECK: cir.store %arg0, %0 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>> // CHECK: cir.return // CHECK: } -cir.func @func3(%arg0: !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>) { - %0 = cir.alloca !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 10>>>, ["pp", init] {alignment = 8 : i64} - cir.store %arg0, %0 : !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 10>>> +cir.func @func3(%arg0: !cir.ptr<!cir.array<!s32i x 10>>) { + %0 = cir.alloca !cir.ptr<!cir.array<!s32i x 10>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 10>>>, ["pp", init] {alignment = 8 : i64} + cir.store %arg0, %0 : !cir.ptr<!cir.array<!s32i x 10>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 10>>> cir.return } -// CHECK: cir.func @func3(%arg0: !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>) { -// CHECK: %0 = cir.alloca !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 10>>>, ["pp", init] {alignment = 8 : i64} -// CHECK: cir.store %arg0, %0 : !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 10>>> +// CHECK: cir.func @func3(%arg0: !cir.ptr<!cir.array<!s32i x 10>>) { +// CHECK: %0 = cir.alloca !cir.ptr<!cir.array<!s32i x 10>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 10>>>, ["pp", init] {alignment = 8 : i64} +// CHECK: cir.store %arg0, %0 : !cir.ptr<!cir.array<!s32i x 10>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 10>>> // CHECK: cir.return // CHECK: } diff --git a/clang/test/CIR/IR/cast.cir b/clang/test/CIR/IR/cast.cir index de3cc37467eff..4881db7fc271f 100644 --- a/clang/test/CIR/IR/cast.cir +++ b/clang/test/CIR/IR/cast.cir @@ -15,9 +15,9 @@ module { } } -// CHECK: cir.func @yolo(%arg0: !cir.int<s, 32>) -// CHECK: %0 = cir.cast(int_to_bool, %arg0 : !cir.int<s, 32>), !cir.bool -// CHECK: %1 = cir.const #cir.int<0> : !cir.int<s, 32> +// CHECK: cir.func @yolo(%arg0: !s32i) +// CHECK: %0 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool +// CHECK: %1 = cir.const #cir.int<0> : !s32i // CHECK: cir.func @bitcast -// CHECK: %0 = cir.cast(bitcast, %arg0 : !cir.ptr<!cir.int<s, 32>>), !cir.ptr<f32> +// CHECK: %0 = cir.cast(bitcast, %arg0 : !cir.ptr<!s32i>), !cir.ptr<f32> diff --git a/clang/test/CIR/IR/func.cir b/clang/test/CIR/IR/func.cir index 4077bd33e0438..9ed44611e195d 100644 --- a/clang/test/CIR/IR/func.cir +++ b/clang/test/CIR/IR/func.cir @@ -1,5 +1,10 @@ // RUN: cir-opt %s | 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() { @@ -18,13 +23,13 @@ cir.func @voidret() { // CHECK: } // int intfunc() { return 42; } -cir.func @intfunc() -> !cir.int<s, 32> { - %0 = cir.const #cir.int<42> : !cir.int<s, 32> - cir.return %0 : !cir.int<s, 32> +cir.func @intfunc() -> !s32i { + %0 = cir.const #cir.int<42> : !s32i + cir.return %0 : !s32i } -// CHECK: cir.func @intfunc() -> !cir.int<s, 32> { -// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !cir.int<s, 32> -// CHECK: cir.return %[[VAL]] : !cir.int<s, 32> +// CHECK: cir.func @intfunc() -> !s32i { +// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !s32i +// CHECK: cir.return %[[VAL]] : !s32i // CHECK: } // int scopes() { @@ -34,52 +39,52 @@ cir.func @intfunc() -> !cir.int<s, 32> { // } // } //} -cir.func @scopes() -> !cir.int<s, 32> { +cir.func @scopes() -> !s32i { cir.scope { cir.scope { - %0 = cir.const #cir.int<99> : !cir.int<s, 32> - cir.return %0 : !cir.int<s, 32> + %0 = cir.const #cir.int<99> : !s32i + cir.return %0 : !s32i } } cir.trap } -// CHECK: cir.func @scopes() -> !cir.int<s, 32> { +// CHECK: cir.func @scopes() -> !s32i { // CHECK: cir.scope { // CHECK: cir.scope { -// CHECK: %[[VAL:.*]] = cir.const #cir.int<99> : !cir.int<s, 32> -// CHECK: cir.return %[[VAL]] : !cir.int<s, 32> +// 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() -> !cir.int<s, 64> { - %0 = cir.const #cir.int<42> : !cir.int<s, 64> - cir.return %0 : !cir.int<s, 64> +cir.func @longfunc() -> !s64i { + %0 = cir.const #cir.int<42> : !s64i + cir.return %0 : !s64i } -// CHECK: cir.func @longfunc() -> !cir.int<s, 64> -// CHECK: %0 = cir.const #cir.int<42> : !cir.int<s, 64> -// CHECK: cir.return %0 : !cir.int<s, 64> +// 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() -> !cir.int<u, 32> { - %0 = cir.const #cir.int<42> : !cir.int<u, 32> - cir.return %0 : !cir.int<u, 32> +cir.func @unsignedfunc() -> !u32i { + %0 = cir.const #cir.int<42> : !u32i + cir.return %0 : !u32i } -// CHECK: cir.func @unsignedfunc() -> !cir.int<u, 32> -// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !cir.int<u, 32> -// CHECK: cir.return %[[VAL]] : !cir.int<u, 32> +// 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() -> !cir.int<u, 64> { - %0 = cir.const #cir.int<42> : !cir.int<u, 64> - cir.return %0 : !cir.int<u, 64> +cir.func @ullfunc() -> !u64i { + %0 = cir.const #cir.int<42> : !u64i + cir.return %0 : !u64i } -// CHECK: cir.func @ullfunc() -> !cir.int<u, 64> -// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !cir.int<u, 64> -// CHECK: cir.return %[[VAL:.*]] : !cir.int<u, 64> +// CHECK: cir.func @ullfunc() -> !u64i +// CHECK: %[[VAL:.*]] = cir.const #cir.int<42> : !u64i +// CHECK: cir.return %[[VAL:.*]] : !u64i // CHECK: } } diff --git a/clang/test/CIR/IR/global-var-linkage.cir b/clang/test/CIR/IR/global-var-linkage.cir index 055201b27000d..6486b700bdbb2 100644 --- a/clang/test/CIR/IR/global-var-linkage.cir +++ b/clang/test/CIR/IR/global-var-linkage.cir @@ -1,18 +1,20 @@ // RUN: cir-opt %s -o %t.cir // RUN: FileCheck --input-file=%t.cir %s +!s32i = !cir.int<s, 32> + module attributes {cir.triple = "x86_64-unknown-linux-gnu"} { - cir.global external @aaaa : !cir.int<s, 32> - cir.global internal @bbbb : !cir.int<s, 32> - cir.global linkonce_odr @cccc : !cir.int<s, 32> - cir.global internal @ffff = #cir.int<0> : !cir.int<s, 32> - cir.global weak_odr @dddd : !cir.int<s, 32> + cir.global external @aaaa : !s32i + cir.global internal @bbbb : !s32i + cir.global linkonce_odr @cccc : !s32i + cir.global internal @ffff = #cir.int<0> : !s32i + cir.global weak_odr @dddd : !s32i } // CHECK: module attributes {cir.triple = "x86_64-unknown-linux-gnu"} { -// CHECK: cir.global external @aaaa : !cir.int<s, 32> -// CHECK: cir.global internal @bbbb : !cir.int<s, 32> -// CHECK: cir.global linkonce_odr @cccc : !cir.int<s, 32> -// CHECK: cir.global internal @ffff = #cir.int<0> : !cir.int<s, 32> -// CHECK: cir.global weak_odr @dddd : !cir.int<s, 32> +// CHECK: cir.global external @aaaa : !s32i +// CHECK: cir.global internal @bbbb : !s32i +// CHECK: cir.global linkonce_odr @cccc : !s32i +// CHECK: cir.global internal @ffff = #cir.int<0> : !s32i +// CHECK: cir.global weak_odr @dddd : !s32i // CHECK: } diff --git a/clang/test/CIR/IR/global.cir b/clang/test/CIR/IR/global.cir index 12eda5a946af5..e46a30c7cce40 100644 --- a/clang/test/CIR/IR/global.cir +++ b/clang/test/CIR/IR/global.cir @@ -1,23 +1,35 @@ // RUN: cir-opt %s -o - | FileCheck %s +!s8i = !cir.int<s, 8> +!s16i = !cir.int<s, 16> +!s32i = !cir.int<s, 32> +!s64i = !cir.int<s, 64> +!s128i = !cir.int<s, 128> +!u8i = !cir.int<u, 8> +!u16i = !cir.int<u, 16> +!u32i = !cir.int<u, 32> +!u64i = !cir.int<u, 64> +!u128i = !cir.int<u, 128> +!void = !cir.void + module attributes {cir.triple = "x86_64-unknown-linux-gnu"} { - cir.global external @c : !cir.int<s, 8> - cir.global external @sc : !cir.int<s, 8> - cir.global external @uc : !cir.int<u, 8> - cir.global external @ss : !cir.int<s, 16> - cir.global external @us = #cir.int<100> : !cir.int<u, 16> - cir.global external @si = #cir.int<42> : !cir.int<s, 32> - cir.global external @ui : !cir.int<u, 32> - cir.global external @sl : !cir.int<s, 64> - cir.global external @ul : !cir.int<u, 64> - cir.global external @sll : !cir.int<s, 64> - cir.global external @ull = #cir.int<123456> : !cir.int<u, 64> - cir.global external @s128 : !cir.int<s, 128> - cir.global external @u128 : !cir.int<u, 128> - cir.global external @wc : !cir.int<s, 32> - cir.global external @c8 : !cir.int<u, 8> - cir.global external @c16 : !cir.int<u, 16> - cir.global external @c32 : !cir.int<u, 32> + cir.global external @c : !s8i + cir.global external @sc : !s8i + cir.global external @uc : !u8i + cir.global external @ss : !s16i + cir.global external @us = #cir.int<100> : !u16i + cir.global external @si = #cir.int<42> : !s32i + cir.global external @ui : !u32i + cir.global external @sl : !s64i + cir.global external @ul : !u64i + cir.global external @sll : !s64i + cir.global external @ull = #cir.int<123456> : !u64i + cir.global external @s128 : !s128i + cir.global external @u128 : !u128i + cir.global external @wc : !s32i + cir.global external @c8 : !u8i + cir.global external @c16 : !u16i + cir.global external @c32 : !u32i cir.global external @sb20 : !cir.int<s, 20> cir.global external @ub48 : !cir.int<u, 48> cir.global external @f16 : !cir.f16 @@ -26,32 +38,32 @@ module attributes {cir.triple = "x86_64-unknown-linux-gnu"} { cir.global external @d = #cir.fp<1.250000e+00> : !cir.double cir.global external @ld : !cir.long_double<!cir.f80> cir.global external @f128 : !cir.f128 - cir.global external @vp : !cir.ptr<!cir.void> - cir.global external @ip = #cir.ptr<null> : !cir.ptr<!cir.int<s, 32>> + cir.global external @vp : !cir.ptr<!void> + cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i> cir.global external @dp : !cir.ptr<!cir.double> - cir.global external @cpp : !cir.ptr<!cir.ptr<!cir.int<s, 8>>> + cir.global external @cpp : !cir.ptr<!cir.ptr<!s8i>> cir.global external @fp : !cir.ptr<!cir.func<()>> - cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!cir.int<s, 32>) -> !cir.int<s, 32>>> - cir.global external @fpvar : !cir.ptr<!cir.func<(!cir.int<s, 32>, ...)>> + cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>> + cir.global external @fpvar : !cir.ptr<!cir.func<(!s32i, ...)>> } -// CHECK: cir.global external @c : !cir.int<s, 8> -// CHECK: cir.global external @sc : !cir.int<s, 8> -// CHECK: cir.global external @uc : !cir.int<u, 8> -// CHECK: cir.global external @ss : !cir.int<s, 16> +// CHECK: cir.global external @c : !s8i +// CHECK: cir.global external @sc : !s8i +// CHECK: cir.global external @uc : !u8i +// CHECK: cir.global external @ss : !s16i // CHECK: cir.global external @us = #cir.int<100> // CHECK: cir.global external @si = #cir.int<42> -// CHECK: cir.global external @ui : !cir.int<u, 32> -// CHECK: cir.global external @sl : !cir.int<s, 64> -// CHECK: cir.global external @ul : !cir.int<u, 64> -// CHECK: cir.global external @sll : !cir.int<s, 64> -// CHECK: cir.global external @ull = #cir.int<123456> : !cir.int<u, 64> -// CHECK: cir.global external @s128 : !cir.int<s, 128> -// CHECK: cir.global external @u128 : !cir.int<u, 128> -// CHECK: cir.global external @wc : !cir.int<s, 32> -// CHECK: cir.global external @c8 : !cir.int<u, 8> -// CHECK: cir.global external @c16 : !cir.int<u, 16> -// CHECK: cir.global external @c32 : !cir.int<u, 32> +// CHECK: cir.global external @ui : !u32i +// CHECK: cir.global external @sl : !s64i +// CHECK: cir.global external @ul : !u64i +// CHECK: cir.global external @sll : !s64i +// CHECK: cir.global external @ull = #cir.int<123456> : !u64i +// CHECK: cir.global external @s128 : !s128i +// CHECK: cir.global external @u128 : !u128i +// CHECK: cir.global external @wc : !s32i +// CHECK: cir.global external @c8 : !u8i +// CHECK: cir.global external @c16 : !u16i +// CHECK: cir.global external @c32 : !u32i // CHECK: cir.global external @sb20 : !cir.int<s, 20> // CHECK: cir.global external @ub48 : !cir.int<u, 48> // CHECK: cir.global external @f16 : !cir.f16 @@ -60,10 +72,10 @@ module attributes {cir.triple = "x86_64-unknown-linux-gnu"} { // CHECK: cir.global external @d = #cir.fp<1.250000e+00> : !cir.double // CHECK: cir.global external @ld : !cir.long_double<!cir.f80> // CHECK: cir.global external @f128 : !cir.f128 -// CHECK: cir.global external @vp : !cir.ptr<!cir.void> -// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!cir.int<s, 32>> +// CHECK: cir.global external @vp : !cir.ptr<!void> +// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i> // CHECK: cir.global external @dp : !cir.ptr<!cir.double> -// CHECK: cir.global external @cpp : !cir.ptr<!cir.ptr<!cir.int<s, 8>>> +// CHECK: cir.global external @cpp : !cir.ptr<!cir.ptr<!s8i>> // CHECK: cir.global external @fp : !cir.ptr<!cir.func<()>> -// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!cir.int<s, 32>) -> !cir.int<s, 32>>> -// CHECK: cir.global external @fpvar : !cir.ptr<!cir.func<(!cir.int<s, 32>, ...)>> +// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>> +// CHECK: cir.global external @fpvar : !cir.ptr<!cir.func<(!s32i, ...)>> diff --git a/clang/test/CIR/Lowering/func-simple.cpp b/clang/test/CIR/Lowering/func-simple.cpp index f22562a66e066..1eabc29eea6b0 100644 --- a/clang/test/CIR/Lowering/func-simple.cpp +++ b/clang/test/CIR/Lowering/func-simple.cpp @@ -30,13 +30,11 @@ int scopes() { // CHECK: br label %[[LABEL2:.*]] // CHECK: [[LABEL2]]: // CHECK: store i32 99, ptr %[[RV]], align 4 -// CHECK: br label %[[LABEL3:.*]] -// CHECK: [[LABEL3]]: // CHECK: %[[R:.*]] = load i32, ptr %[[RV]], align 4 // CHECK: ret i32 %[[R]] -// CHECK: [[LABEL4:.*]]: -// CHECK: br label %[[LABEL5:.*]] -// CHECK: [[LABEL5]]: +// CHECK: [[LABEL3:.*]]: +// CHECK: br label %[[LABEL4:.*]] +// CHECK: [[LABEL4]]: // CHECK: call void @llvm.trap() // CHECK: unreachable // CHECK: } diff --git a/clang/test/CIR/Transforms/canonicalize.cir b/clang/test/CIR/Transforms/canonicalize.cir index 9851299893af3..d61991aef6f01 100644 --- a/clang/test/CIR/Transforms/canonicalize.cir +++ b/clang/test/CIR/Transforms/canonicalize.cir @@ -1,20 +1,24 @@ // RUN: cir-opt %s -cir-canonicalize -o - | FileCheck %s +!s32i = !cir.int<s, 32> +!s64i = !cir.int<s, 64> +!u32i = !cir.int<u, 32> + module { cir.func @redundant_br() { cir.br ^bb1 ^bb1: // pred: ^bb0 - %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] {alignment = 4 : i64} - %1 = cir.const #cir.int<4> : !cir.int<u, 32> - cir.store %1, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> + %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] {alignment = 4 : i64} + %1 = cir.const #cir.int<4> : !u32i + cir.store %1, %0 : !u32i, !cir.ptr<!u32i> cir.br ^bb2 ^bb2: // pred: ^bb1 cir.return } // CHECK: cir.func @redundant_br() { - // CHECK-NEXT: %[[A:.*]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] {alignment = 4 : i64} - // CHECK-NEXT: %[[FOUR:.*]] = cir.const #cir.int<4> : !cir.int<u, 32> - // CHECK-NEXT: cir.store %[[FOUR]], %[[A]] : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> + // CHECK-NEXT: %[[A:.*]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] {alignment = 4 : i64} + // CHECK-NEXT: %[[FOUR:.*]] = cir.const #cir.int<4> : !u32i + // CHECK-NEXT: cir.store %[[FOUR]], %[[A]] : !u32i, !cir.ptr<!u32i> // CHECK-NEXT: cir.return // CHECK-NEXT: } @@ -28,34 +32,34 @@ module { // CHECK-NEXT: } cir.func @cast1(%arg0: !cir.bool) -> !cir.bool { - %0 = cir.cast(bool_to_int, %arg0 : !cir.bool), !cir.int<s, 32> - %1 = cir.cast(int_to_bool, %0 : !cir.int<s, 32>), !cir.bool + %0 = cir.cast(bool_to_int, %arg0 : !cir.bool), !s32i + %1 = cir.cast(int_to_bool, %0 : !s32i), !cir.bool cir.return %1 : !cir.bool } // CHECK: cir.func @cast1(%[[ARG0:.*]]: !cir.bool) -> !cir.bool // CHECK-NEXT: cir.return %[[ARG0]] : !cir.bool - cir.func @cast2(%arg0: !cir.int<s, 32>) -> !cir.bool { - %0 = cir.cast(int_to_bool, %arg0 : !cir.int<s, 32>), !cir.bool - %1 = cir.cast(bool_to_int, %0 : !cir.bool), !cir.int<s, 32> - %2 = cir.cast(integral, %1 : !cir.int<s, 32>), !cir.int<s, 64> - %3 = cir.cast(int_to_bool, %2 : !cir.int<s, 64>), !cir.bool + cir.func @cast2(%arg0: !s32i) -> !cir.bool { + %0 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool + %1 = cir.cast(bool_to_int, %0 : !cir.bool), !s32i + %2 = cir.cast(integral, %1 : !s32i), !s64i + %3 = cir.cast(int_to_bool, %2 : !s64i), !cir.bool cir.return %3 : !cir.bool } - // CHECK: cir.func @cast2(%[[ARG0:.*]]: !cir.int<s, 32>) -> !cir.bool - // CHECK-NEXT: %[[CAST:.*]] = cir.cast(int_to_bool, %[[ARG0]] : !cir.int<s, 32>), !cir.bool + // CHECK: cir.func @cast2(%[[ARG0:.*]]: !s32i) -> !cir.bool + // CHECK-NEXT: %[[CAST:.*]] = cir.cast(int_to_bool, %[[ARG0]] : !s32i), !cir.bool // CHECK-NEXT: cir.return %[[CAST]] : !cir.bool - cir.func @no_fold_cast(%arg0: !cir.int<s, 32>) -> !cir.int<s, 64> { - %0 = cir.cast(int_to_bool, %arg0 : !cir.int<s, 32>), !cir.bool - %1 = cir.cast(bool_to_int, %0 : !cir.bool), !cir.int<s, 32> - %2 = cir.cast(integral, %1 : !cir.int<s, 32>), !cir.int<s, 64> - cir.return %2 : !cir.int<s, 64> + cir.func @no_fold_cast(%arg0: !s32i) -> !s64i { + %0 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool + %1 = cir.cast(bool_to_int, %0 : !cir.bool), !s32i + %2 = cir.cast(integral, %1 : !s32i), !s64i + cir.return %2 : !s64i } - // CHECK: cir.func @no_fold_cast(%[[ARG0:.*]]: !cir.int<s, 32>) -> !cir.int<s, 64> - // CHECK-NEXT: %[[CAST:.*]] = cir.cast(int_to_bool, %[[ARG0]] : !cir.int<s, 32>), !cir.bool - // CHECK-NEXT: %[[CAST2:.*]] = cir.cast(bool_to_int, %[[CAST]] : !cir.bool), !cir.int<s, 32> - // CHECK-NEXT: %[[CAST3:.*]] = cir.cast(integral, %[[CAST2]] : !cir.int<s, 32>), !cir.int<s, 64> - // CHECK-NEXT: cir.return %[[CAST3]] : !cir.int<s, 64> + // CHECK: cir.func @no_fold_cast(%[[ARG0:.*]]: !s32i) -> !s64i + // CHECK-NEXT: %[[CAST:.*]] = cir.cast(int_to_bool, %[[ARG0]] : !s32i), !cir.bool + // CHECK-NEXT: %[[CAST2:.*]] = cir.cast(bool_to_int, %[[CAST]] : !cir.bool), !s32i + // CHECK-NEXT: %[[CAST3:.*]] = cir.cast(integral, %[[CAST2]] : !s32i), !s64i + // CHECK-NEXT: cir.return %[[CAST3]] : !s64i } diff --git a/clang/test/CIR/Transforms/scope.cir b/clang/test/CIR/Transforms/scope.cir index d4fc957884a43..2d14784c33f87 100644 --- a/clang/test/CIR/Transforms/scope.cir +++ b/clang/test/CIR/Transforms/scope.cir @@ -1,20 +1,22 @@ // RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s +!u32i = !cir.int<u, 32> + module { cir.func @foo() { cir.scope { - %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] {alignment = 4 : i64} - %1 = cir.const #cir.int<4> : !cir.int<u, 32> - cir.store %1, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> + %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] {alignment = 4 : i64} + %1 = cir.const #cir.int<4> : !u32i + cir.store %1, %0 : !u32i, !cir.ptr<!u32i> } cir.return } // CHECK: cir.func @foo() { // CHECK: cir.br ^bb1 // CHECK: ^bb1: // pred: ^bb0 -// CHECK: %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["a", init] {alignment = 4 : i64} -// CHECK: %1 = cir.const #cir.int<4> : !cir.int<u, 32> -// CHECK: cir.store %1, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> +// CHECK: %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["a", init] {alignment = 4 : i64} +// CHECK: %1 = cir.const #cir.int<4> : !u32i +// CHECK: cir.store %1, %0 : !u32i, !cir.ptr<!u32i> // CHECK: cir.br ^bb2 // CHECK: ^bb2: // pred: ^bb1 // CHECK: cir.return @@ -30,29 +32,29 @@ module { // CHECK: cir.return // CHECK: } - cir.func @scope_with_return() -> !cir.int<u, 32> { - %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["__retval"] {alignment = 4 : i64} + cir.func @scope_with_return() -> !u32i { + %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["__retval"] {alignment = 4 : i64} cir.scope { - %2 = cir.const #cir.int<0> : !cir.int<u, 32> - cir.store %2, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> - %3 = cir.load %0 : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> - cir.return %3 : !cir.int<u, 32> + %2 = cir.const #cir.int<0> : !u32i + cir.store %2, %0 : !u32i, !cir.ptr<!u32i> + %3 = cir.load %0 : !cir.ptr<!u32i>, !u32i + cir.return %3 : !u32i } - %1 = cir.load %0 : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> - cir.return %1 : !cir.int<u, 32> + %1 = cir.load %0 : !cir.ptr<!u32i>, !u32i + cir.return %1 : !u32i } -// CHECK: cir.func @scope_with_return() -> !cir.int<u, 32> { -// CHECK: %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["__retval"] {alignment = 4 : i64} +// CHECK: cir.func @scope_with_return() -> !u32i { +// CHECK: %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["__retval"] {alignment = 4 : i64} // CHECK: cir.br ^bb1 // CHECK: ^bb1: // pred: ^bb0 -// CHECK: %1 = cir.const #cir.int<0> : !cir.int<u, 32> -// CHECK: cir.store %1, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> -// CHECK: cir.return %2 : !cir.int<u, 32> +// CHECK: %1 = cir.const #cir.int<0> : !u32i +// CHECK: cir.store %1, %0 : !u32i, !cir.ptr<!u32i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!u32i>, !u32i +// CHECK: cir.return %2 : !u32i // CHECK: ^bb2: // no predecessors -// CHECK: %3 = cir.load %0 : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> -// CHECK: cir.return %3 : !cir.int<u, 32> +// CHECK: %3 = cir.load %0 : !cir.ptr<!u32i>, !u32i +// CHECK: cir.return %3 : !u32i // CHECK: } } diff --git a/clang/test/CIR/func-simple.cpp b/clang/test/CIR/func-simple.cpp index a0440a941d388..8ccf2110c6bd0 100644 --- a/clang/test/CIR/func-simple.cpp +++ b/clang/test/CIR/func-simple.cpp @@ -8,20 +8,16 @@ void empty() { } void voidret() { return; } // CHECK: cir.func @voidret() { -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: // CHECK: cir.return // CHECK: } int intfunc() { return 42; } -// CHECK: cir.func @intfunc() -> !cir.int<s, 32> { -// CHECK: %0 = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: %1 = cir.const #cir.int<42> : !cir.int<s, 32> -// CHECK: cir.store %1, %0 : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %2 : !cir.int<s, 32> +// CHECK: cir.func @intfunc() -> !s32i { +// CHECK: %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: %1 = cir.const #cir.int<42> : !s32i +// CHECK: cir.store %1, %0 : !s32i, !cir.ptr<!s32i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %2 : !s32i // CHECK: } int scopes() { @@ -31,52 +27,44 @@ int scopes() { } } } -// CHECK: cir.func @scopes() -> !cir.int<s, 32> { -// CHECK: %0 = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["__retval"] {alignment = 4 : i64} +// CHECK: cir.func @scopes() -> !s32i { +// CHECK: %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 4 : i64} // CHECK: cir.scope { // CHECK: cir.scope { -// CHECK: %1 = cir.const #cir.int<99> : !cir.int<s, 32> -// CHECK: cir.store %1, %0 : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32> -// CHECK: cir.return %2 : !cir.int<s, 32> +// CHECK: %1 = cir.const #cir.int<99> : !s32i +// CHECK: cir.store %1, %0 : !s32i, !cir.ptr<!s32i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!s32i>, !s32i +// CHECK: cir.return %2 : !s32i // CHECK: } // CHECK: } // CHECK: cir.trap // CHECK: } long longfunc() { return 42l; } -// CHECK: cir.func @longfunc() -> !cir.int<s, 64> -// CHECK: %0 = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["__retval"] {alignment = 8 : i64} -// CHECK: %1 = cir.const #cir.int<42> : !cir.int<s, 64> -// CHECK: cir.store %1, %0 : !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<s, 64>>, !cir.int<s, 64> -// CHECK: cir.return %2 : !cir.int<s, 64> +// CHECK: cir.func @longfunc() -> !s64i +// CHECK: %0 = cir.alloca !s64i, !cir.ptr<!s64i>, ["__retval"] {alignment = 8 : i64} +// CHECK: %1 = cir.const #cir.int<42> : !s64i +// CHECK: cir.store %1, %0 : !s64i, !cir.ptr<!s64i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!s64i>, !s64i +// CHECK: cir.return %2 : !s64i // CHECK: } unsigned unsignedfunc() { return 42u; } -// CHECK: cir.func @unsignedfunc() -> !cir.int<u, 32> -// CHECK: %0 = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["__retval"] {alignment = 4 : i64} -// CHECK: %1 = cir.const #cir.int<42> : !cir.int<u, 32> -// CHECK: cir.store %1, %0 : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32> -// CHECK: cir.return %2 : !cir.int<u, 32> +// CHECK: cir.func @unsignedfunc() -> !u32i +// CHECK: %0 = cir.alloca !u32i, !cir.ptr<!u32i>, ["__retval"] {alignment = 4 : i64} +// CHECK: %1 = cir.const #cir.int<42> : !u32i +// CHECK: cir.store %1, %0 : !u32i, !cir.ptr<!u32i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!u32i>, !u32i +// CHECK: cir.return %2 : !u32i // CHECK: } unsigned long long ullfunc() { return 42ull; } -// CHECK: cir.func @ullfunc() -> !cir.int<u, 64> -// CHECK: %0 = cir.alloca !cir.int<u, 64>, !cir.ptr<!cir.int<u, 64>>, ["__retval"] {alignment = 8 : i64} -// CHECK: %1 = cir.const #cir.int<42> : !cir.int<u, 64> -// CHECK: cir.store %1, %0 : !cir.int<u, 64>, !cir.ptr<!cir.int<u, 64>> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: -// CHECK: %2 = cir.load %0 : !cir.ptr<!cir.int<u, 64>>, !cir.int<u, 64> -// CHECK: cir.return %2 : !cir.int<u, 64> +// CHECK: cir.func @ullfunc() -> !u64i +// CHECK: %0 = cir.alloca !u64i, !cir.ptr<!u64i>, ["__retval"] {alignment = 8 : i64} +// CHECK: %1 = cir.const #cir.int<42> : !u64i +// CHECK: cir.store %1, %0 : !u64i, !cir.ptr<!u64i> +// CHECK: %2 = cir.load %0 : !cir.ptr<!u64i>, !u64i +// CHECK: cir.return %2 : !u64i // CHECK: } bool boolfunc() { return true; } @@ -84,8 +72,6 @@ bool boolfunc() { return true; } // CHECK: %0 = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["__retval"] {alignment = 1 : i64} // CHECK: %1 = cir.const #true // CHECK: cir.store %1, %0 : !cir.bool, !cir.ptr<!cir.bool> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: // CHECK: %2 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool // CHECK: cir.return %2 : !cir.bool // CHECK: } @@ -95,8 +81,6 @@ float floatfunc() { return 42.42f; } // CHECK: %0 = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["__retval"] {alignment = 4 : i64} // CHECK: %1 = cir.const #cir.fp<4.242 // CHECK: cir.store %1, %0 : !cir.float, !cir.ptr<!cir.float> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: // CHECK: %2 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float // CHECK: cir.return %2 : !cir.float // CHECK: } @@ -106,8 +90,6 @@ double doublefunc() { return 42.42; } // CHECK: %0 = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["__retval"] {alignment = 8 : i64} // CHECK: %1 = cir.const #cir.fp<4.242 // CHECK: cir.store %1, %0 : !cir.double, !cir.ptr<!cir.double> -// CHECK: cir.br ^bb1 -// CHECK: ^bb1: // CHECK: %2 = cir.load %0 : !cir.ptr<!cir.double>, !cir.double // CHECK: cir.return %2 : !cir.double // CHECK: } diff --git a/clang/test/CIR/global-var-simple.cpp b/clang/test/CIR/global-var-simple.cpp index f18f00fd6bd13..020ef5f09c650 100644 --- a/clang/test/CIR/global-var-simple.cpp +++ b/clang/test/CIR/global-var-simple.cpp @@ -2,55 +2,55 @@ // RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - | FileCheck %s char c; -// CHECK: cir.global external @c : !cir.int<s, 8> +// CHECK: cir.global external @c : !s8i signed char sc; -// CHECK: cir.global external @sc : !cir.int<s, 8> +// CHECK: cir.global external @sc : !s8i unsigned char uc; -// CHECK: cir.global external @uc : !cir.int<u, 8> +// CHECK: cir.global external @uc : !u8i short ss; -// CHECK: cir.global external @ss : !cir.int<s, 16> +// CHECK: cir.global external @ss : !s16i unsigned short us = 100; -// CHECK: cir.global external @us = #cir.int<100> : !cir.int<u, 16> +// CHECK: cir.global external @us = #cir.int<100> : !u16i int si = 42; -// CHECK: cir.global external @si = #cir.int<42> : !cir.int<s, 32> +// CHECK: cir.global external @si = #cir.int<42> : !s32i unsigned ui; -// CHECK: cir.global external @ui : !cir.int<u, 32> +// CHECK: cir.global external @ui : !u32i long sl; -// CHECK: cir.global external @sl : !cir.int<s, 64> +// CHECK: cir.global external @sl : !s64i unsigned long ul; -// CHECK: cir.global external @ul : !cir.int<u, 64> +// CHECK: cir.global external @ul : !u64i long long sll; -// CHECK: cir.global external @sll : !cir.int<s, 64> +// CHECK: cir.global external @sll : !s64i unsigned long long ull = 123456; -// CHECK: cir.global external @ull = #cir.int<123456> : !cir.int<u, 64> +// CHECK: cir.global external @ull = #cir.int<123456> : !u64i __int128 s128; -// CHECK: cir.global external @s128 : !cir.int<s, 128> +// CHECK: cir.global external @s128 : !s128i unsigned __int128 u128; -// CHECK: cir.global external @u128 : !cir.int<u, 128> +// CHECK: cir.global external @u128 : !u128i wchar_t wc; -// CHECK: cir.global external @wc : !cir.int<s, 32> +// CHECK: cir.global external @wc : !s32i char8_t c8; -// CHECK: cir.global external @c8 : !cir.int<u, 8> +// CHECK: cir.global external @c8 : !u8i char16_t c16; -// CHECK: cir.global external @c16 : !cir.int<u, 16> +// CHECK: cir.global external @c16 : !u16i char32_t c32; -// CHECK: cir.global external @c32 : !cir.int<u, 32> +// CHECK: cir.global external @c32 : !u32i _BitInt(20) sb20; // CHECK: cir.global external @sb20 : !cir.int<s, 20> @@ -80,22 +80,22 @@ __float128 f128; // CHECK: cir.global external @f128 : !cir.f128 void *vp; -// CHECK: cir.global external @vp : !cir.ptr<!cir.void> +// CHECK: cir.global external @vp : !cir.ptr<!void> int *ip = 0; -// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!cir.int<s, 32>> +// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i> double *dp; // CHECK: cir.global external @dp : !cir.ptr<!cir.double> char **cpp; -// CHECK: cir.global external @cpp : !cir.ptr<!cir.ptr<!cir.int<s, 8>>> +// CHECK: cir.global external @cpp : !cir.ptr<!cir.ptr<!s8i>> void (*fp)(); // CHECK: cir.global external @fp : !cir.ptr<!cir.func<()>> int (*fpii)(int) = 0; -// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!cir.int<s, 32>) -> !cir.int<s, 32>>> +// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>> void (*fpvar)(int, ...); -// CHECK: cir.global external @fpvar : !cir.ptr<!cir.func<(!cir.int<s, 32>, ...)>> +// CHECK: cir.global external @fpvar : !cir.ptr<!cir.func<(!s32i, ...)>> diff --git a/clang/test/CIR/mlprint.c b/clang/test/CIR/mlprint.c index 51ebe526a02e6..755a6cb47855e 100644 --- a/clang/test/CIR/mlprint.c +++ b/clang/test/CIR/mlprint.c @@ -7,7 +7,7 @@ int foo(void) { } // CIR: IR Dump After CIRCanonicalize (cir-canonicalize) -// CIR: cir.func @foo() -> !cir.int<s, 32> +// CIR: cir.func @foo() -> !s32i // LLVM: IR Dump After cir::direct::ConvertCIRToLLVMPass (cir-flat-to-llvm) // LLVM: llvm.func @foo() -> i32 // LLVM: IR Dump After diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt index 51fd4820d7edb..c4918496ef437 100644 --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -1,5 +1,5 @@ # Test runner infrastructure for Clang. This configures the Clang test trees -# for use by Lit, and delegates to LLVM's lit test handlers. +# for use by Lit, and delegates to LLVM's lit test handlers.int llvm_canonicalize_cmake_booleans( CLANG_BUILD_EXAMPLES @@ -89,6 +89,7 @@ list(APPEND CLANG_TEST_DEPS if(CLANG_ENABLE_CIR) list(APPEND CLANG_TEST_DEPS cir-opt + cir-translate ) endif() >From 6c672edceac107f106af7708d4b6415957e8e621 Mon Sep 17 00:00:00 2001 From: Andy Kaylor <akay...@nvidia.com> Date: Wed, 19 Mar 2025 10:54:43 -0700 Subject: [PATCH 2/2] Fix stray comment text --- clang/test/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt index c4918496ef437..af3bc3853edfc 100644 --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -1,5 +1,5 @@ # Test runner infrastructure for Clang. This configures the Clang test trees -# for use by Lit, and delegates to LLVM's lit test handlers.int +# for use by Lit, and delegates to LLVM's lit test handlers. llvm_canonicalize_cmake_booleans( CLANG_BUILD_EXAMPLES _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits