================ @@ -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"))); ---------------- xen0n wrote:
For the record: it may be useful to support overriding code model for TLS variables too (after all the `model` attribute is supposed to be useful for anyone manipulating their own address space layout), but for now matching GCC behavior is more important. If we want to extend the support to TLS variables later, that work should probably first happen in GCC, and not here. https://github.com/llvm/llvm-project/pull/72078 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits