Skip to content

[CIR] Update tests for global vars #141854

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 29, 2025

Conversation

andykaylor
Copy link
Contributor

This change updates a few tests for global variable handling to also check classic codegen output so we can easily verify consistency between the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage handling.

@llvmbot llvmbot added clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project labels May 28, 2025
@llvmbot
Copy link
Member

llvmbot commented May 28, 2025

@llvm/pr-subscribers-clangir

Author: Andy Kaylor (andykaylor)

Changes

This change updates a few tests for global variable handling to also check classic codegen output so we can easily verify consistency between the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage handling.


Full diff: https://github.com/llvm/llvm-project/pull/141854.diff

3 Files Affected:

  • (modified) clang/test/CIR/Lowering/global-var-simple.cpp (+70-36)
  • (modified) clang/test/CIR/Lowering/hello.c (+8-3)
  • (modified) clang/test/CIR/global-var-linkage.cpp (+21-5)
diff --git a/clang/test/CIR/Lowering/global-var-simple.cpp b/clang/test/CIR/Lowering/global-var-simple.cpp
index 33b418430d478..9ad810e0bcf79 100644
--- a/clang/test/CIR/Lowering/global-var-simple.cpp
+++ b/clang/test/CIR/Lowering/global-var-simple.cpp
@@ -1,103 +1,137 @@
 // Global variables of intergal types
-// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o - | FileCheck %s
-
-// Note: Currently unsupported features include alignment..
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s --input-file %t-cir.ll
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 char c;
-// CHECK: @c = dso_local global i8 0
+// CHECK: @c = dso_local global i8 0, align 1
+// OGCG:  @c = dso_local global i8 0, align 1
 
 signed char sc;
-// CHECK: @sc = dso_local global i8 0
+// CHECK: @sc = dso_local global i8 0, align 1
+// OGCG:  @sc = dso_local global i8 0, align 1
 
 unsigned char uc;
-// CHECK: @uc = dso_local global i8 0
+// CHECK: @uc = dso_local global i8 0, align 1
+// OGCG:  @uc = dso_local global i8 0, align 1
 
 short ss;
-// CHECK: @ss = dso_local global i16 0
+// CHECK: @ss = dso_local global i16 0, align 2
+// OGCG:  @ss = dso_local global i16 0, align 2
 
 unsigned short us = 100;
-// CHECK: @us = dso_local global i16 100
+// CHECK: @us = dso_local global i16 100, align 2
+// OGCG:  @us = dso_local global i16 100, align 2
 
 int si = 42;
-// CHECK: @si = dso_local global i32 42
+// CHECK: @si = dso_local global i32 42, align 4
+// OGCG:  @si = dso_local global i32 42, align 4
 
 unsigned ui;
-// CHECK: @ui = dso_local global i32 0
+// CHECK: @ui = dso_local global i32 0, align 4
+// OGCG:  @ui = dso_local global i32 0, align 4
 
 long sl;
-// CHECK: @sl = dso_local global i64 0
+// CHECK: @sl = dso_local global i64 0, align 8
+// OGCG:  @sl = dso_local global i64 0, align 8
 
 unsigned long ul;
-// CHECK: @ul = dso_local global i64 0
+// CHECK: @ul = dso_local global i64 0, align 8
+// OGCG:  @ul = dso_local global i64 0, align 8
 
 long long sll;
-// CHECK: @sll = dso_local global i64 0
+// CHECK: @sll = dso_local global i64 0, align 8
+// OGCG:  @sll = dso_local global i64 0, align 8
 
 unsigned long long ull = 123456;
-// CHECK: @ull = dso_local global i64 123456
+// CHECK: @ull = dso_local global i64 123456, align 8
+// OGCG:  @ull = dso_local global i64 123456, align 8
 
 __int128 s128;
-// CHECK: @s128 = dso_local global i128 0
+// CHECK: @s128 = dso_local global i128 0, align 16
+// OGCG:  @s128 = dso_local global i128 0, align 16
 
 unsigned __int128 u128;
-// CHECK: @u128 = dso_local global i128 0
+// CHECK: @u128 = dso_local global i128 0, align 16
+// OGCG:  @u128 = dso_local global i128 0, align 16
 
 wchar_t wc;
-// CHECK: @wc = dso_local global i32 0
+// CHECK: @wc = dso_local global i32 0, align 4
+// OGCG:  @wc = dso_local global i32 0, align 4
 
 char8_t c8;
-// CHECK: @c8 = dso_local global i8 0
+// CHECK: @c8 = dso_local global i8 0, align 1
+// OGCG:  @c8 = dso_local global i8 0, align 1
 
 char16_t c16;
-// CHECK: @c16 = dso_local global i16 0
+// CHECK: @c16 = dso_local global i16 0, align 2
+// OGCG:  @c16 = dso_local global i16 0, align 2
 
 char32_t c32;
-// CHECK: @c32 = dso_local global i32 0
+// CHECK: @c32 = dso_local global i32 0, align 4
+// OGCG:  @c32 = dso_local global i32 0, align 4
 
 _BitInt(20) sb20;
-// CHECK: @sb20 = dso_local global i20 0
+// CHECK: @sb20 = dso_local global i20 0, align 4
+// OGCG:  @sb20 = dso_local global i20 0, align 4
 
 unsigned _BitInt(48) ub48;
-// CHECK: @ub48 = dso_local global i48 0
+// CHECK: @ub48 = dso_local global i48 0, align 8
+// OGCG:  @ub48 = dso_local global i48 0, align 8
 
 bool boolfalse = false;
-// CHECK: @boolfalse = dso_local global i8 0
+// CHECK: @boolfalse = dso_local global i8 0, align 1
+// OGCG:  @boolfalse = dso_local global i8 0, align 1
 
 _Float16 f16;
-// CHECK: @f16 = dso_local global half
+// CHECK: @f16 = dso_local global half 0xH0000, align 2
+// OGCG:  @f16 = dso_local global half 0xH0000, align 2
 
 __bf16 bf16;
-// CHECK: @bf16 = dso_local global bfloat
+// CHECK: @bf16 = dso_local global bfloat 0xR0000, align 2
+// OGCG:  @bf16 = dso_local global bfloat 0xR0000, align 2
 
 float f;
-// CHECK: @f = dso_local global float 0.000000e+00
+// CHECK: @f = dso_local global float 0.000000e+00, align 4
+// OGCG:  @f = dso_local global float 0.000000e+00, align 4
 
 double d = 1.25;
-// CHECK: @d = dso_local global double 1.250000e+00
+// CHECK: @d = dso_local global double 1.250000e+00, align 8
+// OGCG:  @d = dso_local global double 1.250000e+00, align 8
 
 long double ld;
-// CHECK: @ld = dso_local global x86_fp80 0xK00
+// CHECK: @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
+// OGCG:  @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
 
 __float128 f128;
-// CHECK: @f128 = dso_local global fp128 0xL00
+// CHECK: @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
+// OGCG:  @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
 
 void *vp;
-// CHECK: @vp = dso_local global ptr null
+// CHECK: @vp = dso_local global ptr null, align 8
+// OGCG:  @vp = dso_local global ptr null, align 8
 
 int *ip = 0;
-// CHECK: @ip = dso_local global ptr null
+// CHECK: @ip = dso_local global ptr null, align 8
+// OGCG:  @ip = dso_local global ptr null, align 8
 
 double *dp;
-// CHECK: @dp = dso_local global ptr null
+// CHECK: @dp = dso_local global ptr null, align 8
+// OGCG:  @dp = dso_local global ptr null, align 8
 
 char **cpp;
-// CHECK: @cpp = dso_local global ptr null
+// CHECK: @cpp = dso_local global ptr null, align 8
+// OGCG:  @cpp = dso_local global ptr null, align 8
 
 void (*fp)();
-// CHECK: @fp = dso_local global ptr null
+// CHECK: @fp = dso_local global ptr null, align 8
+// OGCG:  @fp = dso_local global ptr null, align 8
 
 int (*fpii)(int) = 0;
-// CHECK: @fpii = dso_local global ptr null
+// CHECK: @fpii = dso_local global ptr null, align 8
+// OGCG:  @fpii = dso_local global ptr null, align 8
 
 void (*fpvar)(int, ...);
-// CHECK: @fpvar = dso_local global ptr null
+// CHECK: @fpvar = dso_local global ptr null, align 8
+// OGCG:  @fpvar = dso_local global ptr null, align 8
diff --git a/clang/test/CIR/Lowering/hello.c b/clang/test/CIR/Lowering/hello.c
index f45beafdcb533..6fe1e8e33ce64 100644
--- a/clang/test/CIR/Lowering/hello.c
+++ b/clang/test/CIR/Lowering/hello.c
@@ -1,10 +1,15 @@
 // Smoke test for ClangIR-to-LLVM IR code generation
-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o -  | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s --input-file %t-cir.ll
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 int a;
 
-// CHECK: @a = dso_local global i32 0
+// CHECK: @a = dso_local global i32 0, align 4
+// OGCG:  @a = dso_local global i32 0, align 4
 
 int b = 2;
 
-// CHECK: @b = dso_local global i32 2
+// CHECK: @b = dso_local global i32 2, align 4
+// OGCG:  @b = dso_local global i32 2, align 4
diff --git a/clang/test/CIR/global-var-linkage.cpp b/clang/test/CIR/global-var-linkage.cpp
index 657fac5a6b165..a619b17a00173 100644
--- a/clang/test/CIR/global-var-linkage.cpp
+++ b/clang/test/CIR/global-var-linkage.cpp
@@ -1,11 +1,27 @@
 // Linkage types of global variables
-// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o -  | FileCheck %s
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
+// RUN: FileCheck %s -check-prefix=CIR --input-file %t.cir
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s -check-prefix=LLVM --input-file %t-cir.ll
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 int aaaa;
-// CHECK: cir.global external @aaaa
+// CIR: cir.global external @aaaa
+// LLVM: @aaaa = dso_local global i32 0
+// OGCG: @aaaa = dso_local global i32 0
+
 static int bbbb;
-// CHECK: cir.global internal @_ZL4bbbb
+// CIR: cir.global internal @_ZL4bbbb
+// LLVM: @_ZL4bbbb = internal global i32 0
+// OGCG: @_ZL4bbbb = internal global i32 0
+
 inline int cccc;
-// CHECK: cir.global linkonce_odr @cccc
+// CIR: cir.global linkonce_odr @cccc
+// LLVM: @cccc = linkonce_odr dso_local global i32 0
+// OGCG: @cccc = linkonce_odr dso_local global i32 0
+
 [[gnu::selectany]] int dddd;
-// CHECK: cir.global weak_odr @dddd
+// CIR: cir.global weak_odr @dddd
+// LLVM: @dddd = weak_odr dso_local global i32 0
+// OGCG: @dddd = weak_odr dso_local global i32 0

@llvmbot
Copy link
Member

llvmbot commented May 28, 2025

@llvm/pr-subscribers-clang

Author: Andy Kaylor (andykaylor)

Changes

This change updates a few tests for global variable handling to also check classic codegen output so we can easily verify consistency between the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage handling.


Full diff: https://github.com/llvm/llvm-project/pull/141854.diff

3 Files Affected:

  • (modified) clang/test/CIR/Lowering/global-var-simple.cpp (+70-36)
  • (modified) clang/test/CIR/Lowering/hello.c (+8-3)
  • (modified) clang/test/CIR/global-var-linkage.cpp (+21-5)
diff --git a/clang/test/CIR/Lowering/global-var-simple.cpp b/clang/test/CIR/Lowering/global-var-simple.cpp
index 33b418430d478..9ad810e0bcf79 100644
--- a/clang/test/CIR/Lowering/global-var-simple.cpp
+++ b/clang/test/CIR/Lowering/global-var-simple.cpp
@@ -1,103 +1,137 @@
 // Global variables of intergal types
-// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o - | FileCheck %s
-
-// Note: Currently unsupported features include alignment..
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s --input-file %t-cir.ll
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 char c;
-// CHECK: @c = dso_local global i8 0
+// CHECK: @c = dso_local global i8 0, align 1
+// OGCG:  @c = dso_local global i8 0, align 1
 
 signed char sc;
-// CHECK: @sc = dso_local global i8 0
+// CHECK: @sc = dso_local global i8 0, align 1
+// OGCG:  @sc = dso_local global i8 0, align 1
 
 unsigned char uc;
-// CHECK: @uc = dso_local global i8 0
+// CHECK: @uc = dso_local global i8 0, align 1
+// OGCG:  @uc = dso_local global i8 0, align 1
 
 short ss;
-// CHECK: @ss = dso_local global i16 0
+// CHECK: @ss = dso_local global i16 0, align 2
+// OGCG:  @ss = dso_local global i16 0, align 2
 
 unsigned short us = 100;
-// CHECK: @us = dso_local global i16 100
+// CHECK: @us = dso_local global i16 100, align 2
+// OGCG:  @us = dso_local global i16 100, align 2
 
 int si = 42;
-// CHECK: @si = dso_local global i32 42
+// CHECK: @si = dso_local global i32 42, align 4
+// OGCG:  @si = dso_local global i32 42, align 4
 
 unsigned ui;
-// CHECK: @ui = dso_local global i32 0
+// CHECK: @ui = dso_local global i32 0, align 4
+// OGCG:  @ui = dso_local global i32 0, align 4
 
 long sl;
-// CHECK: @sl = dso_local global i64 0
+// CHECK: @sl = dso_local global i64 0, align 8
+// OGCG:  @sl = dso_local global i64 0, align 8
 
 unsigned long ul;
-// CHECK: @ul = dso_local global i64 0
+// CHECK: @ul = dso_local global i64 0, align 8
+// OGCG:  @ul = dso_local global i64 0, align 8
 
 long long sll;
-// CHECK: @sll = dso_local global i64 0
+// CHECK: @sll = dso_local global i64 0, align 8
+// OGCG:  @sll = dso_local global i64 0, align 8
 
 unsigned long long ull = 123456;
-// CHECK: @ull = dso_local global i64 123456
+// CHECK: @ull = dso_local global i64 123456, align 8
+// OGCG:  @ull = dso_local global i64 123456, align 8
 
 __int128 s128;
-// CHECK: @s128 = dso_local global i128 0
+// CHECK: @s128 = dso_local global i128 0, align 16
+// OGCG:  @s128 = dso_local global i128 0, align 16
 
 unsigned __int128 u128;
-// CHECK: @u128 = dso_local global i128 0
+// CHECK: @u128 = dso_local global i128 0, align 16
+// OGCG:  @u128 = dso_local global i128 0, align 16
 
 wchar_t wc;
-// CHECK: @wc = dso_local global i32 0
+// CHECK: @wc = dso_local global i32 0, align 4
+// OGCG:  @wc = dso_local global i32 0, align 4
 
 char8_t c8;
-// CHECK: @c8 = dso_local global i8 0
+// CHECK: @c8 = dso_local global i8 0, align 1
+// OGCG:  @c8 = dso_local global i8 0, align 1
 
 char16_t c16;
-// CHECK: @c16 = dso_local global i16 0
+// CHECK: @c16 = dso_local global i16 0, align 2
+// OGCG:  @c16 = dso_local global i16 0, align 2
 
 char32_t c32;
-// CHECK: @c32 = dso_local global i32 0
+// CHECK: @c32 = dso_local global i32 0, align 4
+// OGCG:  @c32 = dso_local global i32 0, align 4
 
 _BitInt(20) sb20;
-// CHECK: @sb20 = dso_local global i20 0
+// CHECK: @sb20 = dso_local global i20 0, align 4
+// OGCG:  @sb20 = dso_local global i20 0, align 4
 
 unsigned _BitInt(48) ub48;
-// CHECK: @ub48 = dso_local global i48 0
+// CHECK: @ub48 = dso_local global i48 0, align 8
+// OGCG:  @ub48 = dso_local global i48 0, align 8
 
 bool boolfalse = false;
-// CHECK: @boolfalse = dso_local global i8 0
+// CHECK: @boolfalse = dso_local global i8 0, align 1
+// OGCG:  @boolfalse = dso_local global i8 0, align 1
 
 _Float16 f16;
-// CHECK: @f16 = dso_local global half
+// CHECK: @f16 = dso_local global half 0xH0000, align 2
+// OGCG:  @f16 = dso_local global half 0xH0000, align 2
 
 __bf16 bf16;
-// CHECK: @bf16 = dso_local global bfloat
+// CHECK: @bf16 = dso_local global bfloat 0xR0000, align 2
+// OGCG:  @bf16 = dso_local global bfloat 0xR0000, align 2
 
 float f;
-// CHECK: @f = dso_local global float 0.000000e+00
+// CHECK: @f = dso_local global float 0.000000e+00, align 4
+// OGCG:  @f = dso_local global float 0.000000e+00, align 4
 
 double d = 1.25;
-// CHECK: @d = dso_local global double 1.250000e+00
+// CHECK: @d = dso_local global double 1.250000e+00, align 8
+// OGCG:  @d = dso_local global double 1.250000e+00, align 8
 
 long double ld;
-// CHECK: @ld = dso_local global x86_fp80 0xK00
+// CHECK: @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
+// OGCG:  @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
 
 __float128 f128;
-// CHECK: @f128 = dso_local global fp128 0xL00
+// CHECK: @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
+// OGCG:  @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
 
 void *vp;
-// CHECK: @vp = dso_local global ptr null
+// CHECK: @vp = dso_local global ptr null, align 8
+// OGCG:  @vp = dso_local global ptr null, align 8
 
 int *ip = 0;
-// CHECK: @ip = dso_local global ptr null
+// CHECK: @ip = dso_local global ptr null, align 8
+// OGCG:  @ip = dso_local global ptr null, align 8
 
 double *dp;
-// CHECK: @dp = dso_local global ptr null
+// CHECK: @dp = dso_local global ptr null, align 8
+// OGCG:  @dp = dso_local global ptr null, align 8
 
 char **cpp;
-// CHECK: @cpp = dso_local global ptr null
+// CHECK: @cpp = dso_local global ptr null, align 8
+// OGCG:  @cpp = dso_local global ptr null, align 8
 
 void (*fp)();
-// CHECK: @fp = dso_local global ptr null
+// CHECK: @fp = dso_local global ptr null, align 8
+// OGCG:  @fp = dso_local global ptr null, align 8
 
 int (*fpii)(int) = 0;
-// CHECK: @fpii = dso_local global ptr null
+// CHECK: @fpii = dso_local global ptr null, align 8
+// OGCG:  @fpii = dso_local global ptr null, align 8
 
 void (*fpvar)(int, ...);
-// CHECK: @fpvar = dso_local global ptr null
+// CHECK: @fpvar = dso_local global ptr null, align 8
+// OGCG:  @fpvar = dso_local global ptr null, align 8
diff --git a/clang/test/CIR/Lowering/hello.c b/clang/test/CIR/Lowering/hello.c
index f45beafdcb533..6fe1e8e33ce64 100644
--- a/clang/test/CIR/Lowering/hello.c
+++ b/clang/test/CIR/Lowering/hello.c
@@ -1,10 +1,15 @@
 // Smoke test for ClangIR-to-LLVM IR code generation
-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o -  | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s --input-file %t-cir.ll
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 int a;
 
-// CHECK: @a = dso_local global i32 0
+// CHECK: @a = dso_local global i32 0, align 4
+// OGCG:  @a = dso_local global i32 0, align 4
 
 int b = 2;
 
-// CHECK: @b = dso_local global i32 2
+// CHECK: @b = dso_local global i32 2, align 4
+// OGCG:  @b = dso_local global i32 2, align 4
diff --git a/clang/test/CIR/global-var-linkage.cpp b/clang/test/CIR/global-var-linkage.cpp
index 657fac5a6b165..a619b17a00173 100644
--- a/clang/test/CIR/global-var-linkage.cpp
+++ b/clang/test/CIR/global-var-linkage.cpp
@@ -1,11 +1,27 @@
 // Linkage types of global variables
-// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o -  | FileCheck %s
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
+// RUN: FileCheck %s -check-prefix=CIR --input-file %t.cir
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck %s -check-prefix=LLVM --input-file %t-cir.ll
+// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
+// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
 
 int aaaa;
-// CHECK: cir.global external @aaaa
+// CIR: cir.global external @aaaa
+// LLVM: @aaaa = dso_local global i32 0
+// OGCG: @aaaa = dso_local global i32 0
+
 static int bbbb;
-// CHECK: cir.global internal @_ZL4bbbb
+// CIR: cir.global internal @_ZL4bbbb
+// LLVM: @_ZL4bbbb = internal global i32 0
+// OGCG: @_ZL4bbbb = internal global i32 0
+
 inline int cccc;
-// CHECK: cir.global linkonce_odr @cccc
+// CIR: cir.global linkonce_odr @cccc
+// LLVM: @cccc = linkonce_odr dso_local global i32 0
+// OGCG: @cccc = linkonce_odr dso_local global i32 0
+
 [[gnu::selectany]] int dddd;
-// CHECK: cir.global weak_odr @dddd
+// CIR: cir.global weak_odr @dddd
+// LLVM: @dddd = weak_odr dso_local global i32 0
+// OGCG: @dddd = weak_odr dso_local global i32 0

Copy link
Collaborator

@erichkeane erichkeane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the title (s/testds/tests/), else lgtm.

This change updates a few tests for global variable handling to also check
classic codegen output so we can easily verify consistency between the two
and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage
handling.
@andykaylor andykaylor force-pushed the cir-update-global-tests branch from 896e971 to 462dc6a Compare May 28, 2025 20:58
@andykaylor andykaylor changed the title [CIR] Update testds for global vars [CIR] Update tests for global vars May 28, 2025
@andykaylor andykaylor merged commit 2b96c14 into llvm:main May 29, 2025
9 of 10 checks passed
svkeerthy pushed a commit that referenced this pull request May 29, 2025
This change updates a few tests for global variable handling to also
check classic codegen output so we can easily verify consistency between
the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage
handling.
google-yfyang pushed a commit to google-yfyang/llvm-project that referenced this pull request May 29, 2025
This change updates a few tests for global variable handling to also
check classic codegen output so we can easily verify consistency between
the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage
handling.
sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Jun 3, 2025
This change updates a few tests for global variable handling to also
check classic codegen output so we can easily verify consistency between
the two and will be alerted if the classic codegen changes.

This was useful in developing forthcoming changes to global linkage
handling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants