[clang] [clang] Add per-global code model attribute (PR #72078)

via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 11 23:44:34 PST 2023


================
@@ -0,0 +1,37 @@
+// RUN: %clang_cc1 -emit-llvm -triple loongarch64 %s -o - | FileCheck %s
+
+// CHECK: @_ZL2v1 ={{.*}} global i32 0, code_model "small"
+static int v1 __attribute__((model("normal")));
+
+void use1() {
+  v1 = 1;
+}
+
+// CHECK: @v2 ={{.*}} global i32 0, code_model "medium"
+int v2 __attribute__((model("medium")));
+
+// CHECK: @v3 ={{.*}} global float 0.000000e+00, code_model "large"
+float v3 __attribute__((model("extreme")));
+
+// CHECK: @_ZL2v4IiE ={{.*}} global i32 0, code_model "medium"
+template <typename T>
+static T v4 __attribute__((model("medium")));
+
+void use2() {
+  v4<int> = 1;
+}
+
+// CHECK: @v5 ={{.*}} global i32 0, code_model "large"
+thread_local int v5 __attribute__((model("extreme")));
----------------
heiher wrote:

Clang's GlobalVar covers TLSVar, but GCC not. This is why GCC reports an error for that and Clang not. The code model is not useful for thread-local variables, so I added non-TLS global variable to handle it.

https://github.com/llvm/llvm-project/pull/72078


More information about the cfe-commits mailing list