[clang] [LoongArch] Fix '-mno-lsx' option not disabling LASX feature (PR #143821)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 12 00:52:11 PDT 2025
https://github.com/Ami-zhang updated https://github.com/llvm/llvm-project/pull/143821
>From e178bc6c57175676e4a1ae492c5c3abce59a81aa Mon Sep 17 00:00:00 2001
From: Ami-zhang <zhanglimin at loongson.cn>
Date: Wed, 11 Jun 2025 17:30:23 +0800
Subject: [PATCH] [LoongArch] Fix '-mno-lsx' option not disabling LASX feature
When '-march' with LASX feature and '-mno-lsx' options are used
together, '-mno-lsx' fails to disable LASX, leaving
'HasFeatureLASX=true' and causing incorrect '__loongarch_sx/asx=1'
macro definition.
Fixes https://github.com/loongson-community/discussions/issues/95
---
clang/lib/Driver/ToolChains/Arch/LoongArch.cpp | 1 +
clang/test/Preprocessor/init-loongarch.c | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
index 3318e498a74f9..33a655870b01b 100644
--- a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp
@@ -252,6 +252,7 @@ void loongarch::getLoongArchTargetFeatures(const Driver &D,
Features.push_back("+lsx");
} else /*-mno-lsx*/ {
Features.push_back("-lsx");
+ Features.push_back("-lasx");
}
}
diff --git a/clang/test/Preprocessor/init-loongarch.c b/clang/test/Preprocessor/init-loongarch.c
index ac461b371162f..71a266b8a9157 100644
--- a/clang/test/Preprocessor/init-loongarch.c
+++ b/clang/test/Preprocessor/init-loongarch.c
@@ -946,6 +946,10 @@
// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
// RUN: %clang --target=loongarch64 -mno-lasx -mno-lsx -x c -E -dM %s -o - \
// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
+// RUN: %clang --target=loongarch64 -march=la464 -mno-lsx -x c -E -dM %s -o - \
+// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
+// RUN: %clang --target=loongarch64 -mno-lsx -march=la464 -x c -E -dM %s -o - \
+// RUN: | FileCheck --match-full-lines --check-prefix=MNO-LSX %s
// MNO-LSX-NOT: #define __loongarch_asx
// MNO-LSX-NOT: #define __loongarch_simd_width
// MNO-LSX-NOT: #define __loongarch_sx
More information about the cfe-commits
mailing list