[clang] Store FPOptions earlier when parsing function (#92146)
After https://github.com/llvm/llvm-project/pull/85605 ([clang] Set correct FPOptions if attribute 'optnone' presents) the current FP options in Sema are saved during parsing function because Sema can modify them if optnone is present. However they were saved too late, it caused fails in some cases when precompiled headers are used. This patch moves the storing earlier.
This commit is contained in:
@@ -1439,6 +1439,8 @@ Decl *Parser::ParseFunctionDefinition(ParsingDeclarator &D,
|
||||
}
|
||||
}
|
||||
|
||||
Sema::FPFeaturesStateRAII SaveFPFeatures(Actions);
|
||||
|
||||
// Tell the actions module that we have entered a function definition with the
|
||||
// specified Declarator for the function.
|
||||
SkipBodyInfo SkipBody;
|
||||
@@ -1497,8 +1499,6 @@ Decl *Parser::ParseFunctionDefinition(ParsingDeclarator &D,
|
||||
return Actions.ActOnFinishFunctionBody(Res, nullptr, false);
|
||||
}
|
||||
|
||||
Sema::FPFeaturesStateRAII SaveFPFeatures(Actions);
|
||||
|
||||
if (Tok.is(tok::kw_try))
|
||||
return ParseFunctionTryBlock(Res, BodyScope);
|
||||
|
||||
|
||||
6
clang/test/PCH/optnone.cpp
Normal file
6
clang/test/PCH/optnone.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
// RUN: %clang_cc1 -emit-pch -x c++-header %s -o %t.pch
|
||||
// RUN: %clang_cc1 -emit-llvm -DMAIN -include-pch %t.pch %s -o /dev/null
|
||||
|
||||
#ifndef MAIN
|
||||
__attribute__((optnone)) void foo() {}
|
||||
#endif
|
||||
Reference in New Issue
Block a user