Skip to content

Commit 1e5e153

Browse files
authored
Revert "[RISCV][FMV] Support target_version" (#111096)
Reverts #99040 due to https://lab.llvm.org/buildbot/#/builders/190/builds/7052
1 parent 7a5b9ef commit 1e5e153

File tree

8 files changed

+8
-1081
lines changed

8 files changed

+8
-1081
lines changed

clang/lib/AST/ASTContext.cpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14325,17 +14325,9 @@ void ASTContext::getFunctionFeatureMap(llvm::StringMap<bool> &FeatureMap,
1432514325
Target->initFeatureMap(FeatureMap, getDiagnostics(), TargetCPU, Features);
1432614326
}
1432714327
} else if (const auto *TV = FD->getAttr<TargetVersionAttr>()) {
14328-
std::vector<std::string> Features;
14329-
if (Target->getTriple().isRISCV()) {
14330-
ParsedTargetAttr ParsedAttr = Target->parseTargetAttr(TV->getName());
14331-
Features.insert(Features.begin(), ParsedAttr.Features.begin(),
14332-
ParsedAttr.Features.end());
14333-
} else {
14334-
assert(Target->getTriple().isAArch64());
14335-
llvm::SmallVector<StringRef, 8> Feats;
14336-
TV->getFeatures(Feats);
14337-
Features = getFMVBackendFeaturesFor(Feats);
14338-
}
14328+
llvm::SmallVector<StringRef, 8> Feats;
14329+
TV->getFeatures(Feats);
14330+
std::vector<std::string> Features = getFMVBackendFeaturesFor(Feats);
1433914331
Features.insert(Features.begin(),
1434014332
Target->getTargetOpts().FeaturesAsWritten.begin(),
1434114333
Target->getTargetOpts().FeaturesAsWritten.end());

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4287,13 +4287,8 @@ void CodeGenModule::emitMultiVersionFunctions() {
42874287
} else if (const auto *TVA = CurFD->getAttr<TargetVersionAttr>()) {
42884288
if (TVA->isDefaultVersion() && IsDefined)
42894289
ShouldEmitResolver = true;
4290+
TVA->getFeatures(Feats);
42904291
llvm::Function *Func = createFunction(CurFD);
4291-
if (getTarget().getTriple().isRISCV()) {
4292-
Feats.push_back(TVA->getName());
4293-
} else {
4294-
assert(getTarget().getTriple().isAArch64());
4295-
TVA->getFeatures(Feats);
4296-
}
42974292
Options.emplace_back(Func, /*Architecture*/ "", Feats);
42984293
} else if (const auto *TC = CurFD->getAttr<TargetClonesAttr>()) {
42994294
if (IsDefined)

clang/lib/Sema/SemaDecl.cpp

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10329,8 +10329,7 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
1032910329
// Handle attributes.
1033010330
ProcessDeclAttributes(S, NewFD, D);
1033110331
const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>();
10332-
if (Context.getTargetInfo().getTriple().isAArch64() && NewTVA &&
10333-
!NewTVA->isDefaultVersion() &&
10332+
if (NewTVA && !NewTVA->isDefaultVersion() &&
1033410333
!Context.getTargetInfo().hasFeature("fmv")) {
1033510334
// Don't add to scope fmv functions declarations if fmv disabled
1033610335
AddToScope = false;
@@ -11039,15 +11038,7 @@ static bool CheckMultiVersionValue(Sema &S, const FunctionDecl *FD) {
1103911038

1104011039
if (TVA) {
1104111040
llvm::SmallVector<StringRef, 8> Feats;
11042-
if (S.getASTContext().getTargetInfo().getTriple().isRISCV()) {
11043-
ParsedTargetAttr ParseInfo =
11044-
S.getASTContext().getTargetInfo().parseTargetAttr(TVA->getName());
11045-
for (auto &Feat : ParseInfo.Features)
11046-
Feats.push_back(StringRef{Feat}.substr(1));
11047-
} else {
11048-
assert(S.getASTContext().getTargetInfo().getTriple().isAArch64());
11049-
TVA->getFeatures(Feats);
11050-
}
11041+
TVA->getFeatures(Feats);
1105111042
for (const auto &Feat : Feats) {
1105211043
if (!TargetInfo.validateCpuSupports(Feat)) {
1105311044
S.Diag(FD->getLocation(), diag::err_bad_multiversion_option)
@@ -11333,8 +11324,7 @@ static bool PreviousDeclsHaveMultiVersionAttribute(const FunctionDecl *FD) {
1133311324
}
1133411325

1133511326
static void patchDefaultTargetVersion(FunctionDecl *From, FunctionDecl *To) {
11336-
if (!From->getASTContext().getTargetInfo().getTriple().isAArch64() &&
11337-
!From->getASTContext().getTargetInfo().getTriple().isRISCV())
11327+
if (!From->getASTContext().getTargetInfo().getTriple().isAArch64())
1133811328
return;
1133911329

1134011330
MultiVersionKind MVKindFrom = From->getMultiVersionKind();
@@ -15521,8 +15511,7 @@ Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Decl *D,
1552115511
FD->setInvalidDecl();
1552215512
}
1552315513
if (const auto *Attr = FD->getAttr<TargetVersionAttr>()) {
15524-
if (Context.getTargetInfo().getTriple().isAArch64() &&
15525-
!Context.getTargetInfo().hasFeature("fmv") &&
15514+
if (!Context.getTargetInfo().hasFeature("fmv") &&
1552615515
!Attr->isDefaultVersion()) {
1552715516
// If function multi versioning disabled skip parsing function body
1552815517
// defined with non-default target_version attribute

clang/lib/Sema/SemaDeclAttr.cpp

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3040,54 +3040,6 @@ bool Sema::checkTargetVersionAttr(SourceLocation LiteralLoc, Decl *D,
30403040
enum SecondParam { None };
30413041
enum ThirdParam { Target, TargetClones, TargetVersion };
30423042
llvm::SmallVector<StringRef, 8> Features;
3043-
if (Context.getTargetInfo().getTriple().isRISCV()) {
3044-
llvm::SmallVector<StringRef, 8> AttrStrs;
3045-
AttrStr.split(AttrStrs, ';');
3046-
3047-
bool HasArch = false;
3048-
bool HasPriority = false;
3049-
bool HasDefault = false;
3050-
bool DuplicateAttr = false;
3051-
for (auto &AttrStr : AttrStrs) {
3052-
// Only support arch=+ext,... syntax.
3053-
if (AttrStr.starts_with("arch=+")) {
3054-
if (HasArch)
3055-
DuplicateAttr = true;
3056-
HasArch = true;
3057-
ParsedTargetAttr TargetAttr =
3058-
Context.getTargetInfo().parseTargetAttr(AttrStr);
3059-
3060-
if (TargetAttr.Features.empty() ||
3061-
llvm::any_of(TargetAttr.Features, [&](const StringRef Ext) {
3062-
return !RISCV().isValidFMVExtension(Ext);
3063-
}))
3064-
return Diag(LiteralLoc, diag::warn_unsupported_target_attribute)
3065-
<< Unsupported << None << AttrStr << TargetVersion;
3066-
} else if (AttrStr.starts_with("default")) {
3067-
if (HasDefault)
3068-
DuplicateAttr = true;
3069-
HasDefault = true;
3070-
} else if (AttrStr.consume_front("priority=")) {
3071-
if (HasPriority)
3072-
DuplicateAttr = true;
3073-
HasPriority = true;
3074-
int Digit;
3075-
if (AttrStr.getAsInteger(0, Digit))
3076-
return Diag(LiteralLoc, diag::warn_unsupported_target_attribute)
3077-
<< Unsupported << None << AttrStr << TargetVersion;
3078-
} else {
3079-
return Diag(LiteralLoc, diag::warn_unsupported_target_attribute)
3080-
<< Unsupported << None << AttrStr << TargetVersion;
3081-
}
3082-
}
3083-
3084-
if (((HasPriority || HasArch) && HasDefault) || DuplicateAttr ||
3085-
(HasPriority && !HasArch))
3086-
return Diag(LiteralLoc, diag::warn_unsupported_target_attribute)
3087-
<< Unsupported << None << AttrStr << TargetVersion;
3088-
3089-
return false;
3090-
}
30913043
AttrStr.split(Features, "+");
30923044
for (auto &CurFeature : Features) {
30933045
CurFeature = CurFeature.trim();

clang/test/CodeGen/attr-target-version-riscv-invalid.c

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)