Author: wanglei Date: 2026-07-27T09:00:56+08:00 New Revision: a54947f4061498fa5aadf2f8e832ae96a3405c4d
URL: https://github.com/llvm/llvm-project/commit/a54947f4061498fa5aadf2f8e832ae96a3405c4d DIFF: https://github.com/llvm/llvm-project/commit/a54947f4061498fa5aadf2f8e832ae96a3405c4d.diff LOG: [Clang][LoongArch] Implement getConstraintRegister for LoongArch (#210898) Implement `getConstraintRegister` so Clang can diagnose inline asm register clobber conflicts for LoongArch, matching GCC. Added: clang/test/Sema/inline-asm-validate-loongarch.c Modified: clang/lib/Basic/Targets/LoongArch.h Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/LoongArch.h b/clang/lib/Basic/Targets/LoongArch.h index 4c98f9d0e40ae..95d5653f0fbf7 100644 --- a/clang/lib/Basic/Targets/LoongArch.h +++ b/clang/lib/Basic/Targets/LoongArch.h @@ -87,6 +87,11 @@ class LLVM_LIBRARY_VISIBILITY LoongArchTargetInfo : public TargetInfo { std::string_view getClobbers() const override { return ""; } + StringRef getConstraintRegister(StringRef Constraint, + StringRef Expression) const override { + return Expression; + } + ArrayRef<const char *> getGCCRegNames() const override; int getEHDataRegisterNumber(unsigned RegNo) const override { diff --git a/clang/test/Sema/inline-asm-validate-loongarch.c b/clang/test/Sema/inline-asm-validate-loongarch.c new file mode 100644 index 0000000000000..a621604e4c082 --- /dev/null +++ b/clang/test/Sema/inline-asm-validate-loongarch.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -triple loongarch32 -fsyntax-only -verify %s +// RUN: %clang_cc1 -triple loongarch64 -fsyntax-only -verify %s + +void test_clobber_conflict(void) { + register long r4 asm("r4"); + asm volatile("" :: "r"(r4) : "$r4"); // expected-error {{conflicts with asm clobber list}} + asm volatile("" :: "r"(r4) : "$a0"); // expected-error {{conflicts with asm clobber list}} + asm volatile("" : "=r"(r4) :: "$r4"); // expected-error {{conflicts with asm clobber list}} + asm volatile("" : "=r"(r4) :: "$a0"); // expected-error {{conflicts with asm clobber list}} +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
