Skip to content

Commit b045e55

Browse files
committed
[SOL] Add sbf-solana-solana target triplet
1 parent d9d227e commit b045e55

File tree

20 files changed

+69
-11
lines changed

20 files changed

+69
-11
lines changed

clang/include/clang/Basic/Attr.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def TargetARM : TargetArch<["arm", "thumb", "armeb", "thumbeb"]>;
364364
def TargetAArch64 : TargetArch<["aarch64"]>;
365365
def TargetAnyArm : TargetArch<!listconcat(TargetARM.Arches, TargetAArch64.Arches)>;
366366
def TargetAVR : TargetArch<["avr"]>;
367-
def TargetBPF : TargetArch<["bpfel", "bpfeb"]>;
367+
def TargetBPF : TargetArch<["bpfel", "bpfeb", "sbf"]>;
368368
def TargetMips32 : TargetArch<["mips", "mipsel"]>;
369369
def TargetAnyMips : TargetArch<["mips", "mipsel", "mips64", "mips64el"]>;
370370
def TargetMSP430 : TargetArch<["msp430"]>;

clang/lib/Basic/Targets.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple,
237237
return new AVRTargetInfo(Triple, Opts);
238238
case llvm::Triple::bpfeb:
239239
case llvm::Triple::bpfel:
240+
case llvm::Triple::sbf:
240241
return new BPFTargetInfo(Triple, Opts);
241242

242243
case llvm::Triple::msp430:

clang/lib/Basic/Targets/BPF.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ class LLVM_LIBRARY_VISIBILITY BPFTargetInfo : public TargetInfo {
3636
IntMaxType = SignedLong;
3737
Int64Type = SignedLong;
3838
RegParmMax = 5;
39-
for (auto& it : Opts.FeaturesAsWritten) {
40-
if (it == "+solana") {
41-
HasSolanaFeature = true;
42-
break;
39+
if (Triple.getArch() == llvm::Triple::sbf) {
40+
HasSolanaFeature = true;
41+
} else {
42+
for (auto& it : Opts.FeaturesAsWritten) {
43+
if (it == "+solana") {
44+
HasSolanaFeature = true;
45+
break;
46+
}
4347
}
4448
}
4549
if (Triple.getArch() == llvm::Triple::bpfeb) {

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5308,6 +5308,7 @@ static Value *EmitTargetArchBuiltinExpr(CodeGenFunction *CGF,
53085308
return CGF->EmitAArch64BuiltinExpr(BuiltinID, E, Arch);
53095309
case llvm::Triple::bpfeb:
53105310
case llvm::Triple::bpfel:
5311+
case llvm::Triple::sbf:
53115312
return CGF->EmitBPFBuiltinExpr(BuiltinID, E);
53125313
case llvm::Triple::x86:
53135314
case llvm::Triple::x86_64:

clang/lib/Driver/ToolChains/Arch/BPF.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ getBPFArchFeaturesFromMarch(const Driver &D, StringRef March,
3838
std::string MarchLowerCase = March.lower();
3939
std::pair<StringRef, StringRef> Split = StringRef(MarchLowerCase).split("+");
4040

41+
if (Split.first == "sbf") {
42+
Features.push_back("+solana");
43+
return true;
44+
}
45+
4146
return (Split.first == "bpfel" || Split.first == "bpfeb") &&
4247
(Split.second.size() == 0 || DecodeBPFFeatures(D, Split.second, Features));
4348
}

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ static void getTargetFeatures(const Driver &D, const llvm::Triple &Triple,
349349
break;
350350
case llvm::Triple::bpfeb:
351351
case llvm::Triple::bpfel:
352+
case llvm::Triple::sbf:
352353
bpf::getBPFTargetFeatures(D, Args, Features);
353354
break;
354355
case llvm::Triple::x86:

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,7 @@ std::string tools::getCPUName(const ArgList &Args, const llvm::Triple &T,
427427

428428
case llvm::Triple::bpfel:
429429
case llvm::Triple::bpfeb:
430+
case llvm::Triple::sbf:
430431
case llvm::Triple::sparc:
431432
case llvm::Triple::sparcel:
432433
case llvm::Triple::sparcv9:

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2744,6 +2744,7 @@ bool Generic_GCC::IsIntegratedAssemblerDefault() const {
27442744
case llvm::Triple::avr:
27452745
case llvm::Triple::bpfel:
27462746
case llvm::Triple::bpfeb:
2747+
case llvm::Triple::sbf:
27472748
case llvm::Triple::thumb:
27482749
case llvm::Triple::thumbeb:
27492750
case llvm::Triple::ppc:

clang/lib/Sema/SemaChecking.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,6 +1410,7 @@ bool Sema::CheckTSBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID,
14101410
return CheckAArch64BuiltinFunctionCall(TI, BuiltinID, TheCall);
14111411
case llvm::Triple::bpfeb:
14121412
case llvm::Triple::bpfel:
1413+
case llvm::Triple::sbf:
14131414
return CheckBPFBuiltinFunctionCall(BuiltinID, TheCall);
14141415
case llvm::Triple::hexagon:
14151416
return CheckHexagonBuiltinFunctionCall(BuiltinID, TheCall);

clang/test/CodeGen/target-data.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@
281281
// RUN: FileCheck %s -check-prefix=BPFEB
282282
// BPFEB: target datalayout = "E-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
283283

284+
// RUN: %clang_cc1 -triple sbf -o - -emit-llvm %s | \
285+
// RUN: FileCheck %s -check-prefix=SBF
286+
// SBF: target datalayout = "e-m:e-p:64:64-i64:64-n32:64-S128"
287+
284288
// RUN: %clang_cc1 -triple bpfel -target-feature +solana -o - -emit-llvm %s | \
285289
// RUN: FileCheck %s -check-prefix=BPFELSOL
286290
// BPFELSOL: target datalayout = "e-m:e-p:64:64-i64:64-n32:64-S128"

0 commit comments

Comments
 (0)