aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 2d6ef998485a..8400774db93d 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -24,6 +24,7 @@
#include "Targets/Hexagon.h"
#include "Targets/Lanai.h"
#include "Targets/Le64.h"
+#include "Targets/LoongArch.h"
#include "Targets/M68k.h"
#include "Targets/MSP430.h"
#include "Targets/Mips.h"
@@ -80,9 +81,10 @@ void defineCPUMacros(MacroBuilder &Builder, StringRef CPUName, bool Tuning) {
void addCygMingDefines(const LangOptions &Opts, MacroBuilder &Builder) {
// Mingw and cygwin define __declspec(a) to __attribute__((a)). Clang
- // supports __declspec natively under -fms-extensions, but we define a no-op
- // __declspec macro anyway for pre-processor compatibility.
- if (Opts.MicrosoftExt)
+ // supports __declspec natively under -fdeclspec (also enabled with
+ // -fms-extensions), but we define a no-op __declspec macro anyway for
+ // pre-processor compatibility.
+ if (Opts.DeclSpecKeyword)
Builder.defineMacro("__declspec", "__declspec");
else
Builder.defineMacro("__declspec(a)", "__attribute__((a))");
@@ -670,6 +672,20 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple,
default:
return new CSKYTargetInfo(Triple, Opts);
}
+ case llvm::Triple::loongarch32:
+ switch (os) {
+ case llvm::Triple::Linux:
+ return new LinuxTargetInfo<LoongArch32TargetInfo>(Triple, Opts);
+ default:
+ return new LoongArch32TargetInfo(Triple, Opts);
+ }
+ case llvm::Triple::loongarch64:
+ switch (os) {
+ case llvm::Triple::Linux:
+ return new LinuxTargetInfo<LoongArch64TargetInfo>(Triple, Opts);
+ default:
+ return new LoongArch64TargetInfo(Triple, Opts);
+ }
}
}
} // namespace targets