forked from OSchip/llvm-project
[Sema] Fix a crash on invalid features in multiversioning
We were trying to emit a diag::err_bad_multiversion_option diagnostic, which expects an int as its first argument, with a string argument. As it happens, the string `Feature` that was causing this was shadowing an int `Feature` from the surrounding scope. :) llvm-svn: 322530
This commit is contained in:
parent
d57c03ddca
commit
d74b6a8f64
|
@ -9175,9 +9175,9 @@ static bool CheckMultiVersionValue(Sema &S, const FunctionDecl *FD) {
|
|||
return true;
|
||||
}
|
||||
|
||||
for (const auto &Feature : ParseInfo.Features) {
|
||||
auto BareFeat = StringRef{Feature}.substr(1);
|
||||
if (Feature[0] == '-') {
|
||||
for (const auto &Feat : ParseInfo.Features) {
|
||||
auto BareFeat = StringRef{Feat}.substr(1);
|
||||
if (Feat[0] == '-') {
|
||||
S.Diag(FD->getLocation(), diag::err_bad_multiversion_option)
|
||||
<< Feature << ("no-" + BareFeat).str();
|
||||
return true;
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -verify -fexceptions -fcxx-exceptions %s -std=c++14
|
||||
void __attribute__((target("default"))) invalid_features(void);
|
||||
//expected-error@+2 {{function multiversioning doesn't support feature 'hello_world'}}
|
||||
//expected-warning@+1 {{ignoring unsupported 'hello_world' in the target attribute string}}
|
||||
void __attribute__((target("hello_world"))) invalid_features(void);
|
||||
//expected-error@+1 {{function multiversioning doesn't support feature 'no-sse4.2'}}
|
||||
void __attribute__((target("no-sse4.2"))) invalid_features(void);
|
||||
|
||||
void __attribute__((target("sse4.2"))) no_default(void);
|
||||
void __attribute__((target("arch=sandybridge"))) no_default(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue