[clang] dc34d8d - Revert "[FPEnv] Allow CompoundStmt to keep FP options"
Serge Pavlov via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 1 01:43:47 PDT 2022
Author: Serge Pavlov
Date: 2022-07-01T15:42:39+07:00
New Revision: dc34d8df4c48b3a8f474360970cae8a58e6c84f0
URL: https://github.com/llvm/llvm-project/commit/dc34d8df4c48b3a8f474360970cae8a58e6c84f0
DIFF: https://github.com/llvm/llvm-project/commit/dc34d8df4c48b3a8f474360970cae8a58e6c84f0.diff
LOG: Revert "[FPEnv] Allow CompoundStmt to keep FP options"
On some buildbots test `ast-print-fp-pragmas.c` fails, need to investigate it.
This reverts commit 0401fd12d4aa0553347fe34d666fb236d8719173.
This reverts commit b822efc7404bf09ccfdc1ab7657475026966c3b2.
Added:
Modified:
clang/include/clang/AST/JSONNodeDumper.h
clang/include/clang/AST/Stmt.h
clang/include/clang/AST/TextNodeDumper.h
clang/include/clang/Basic/LangOptions.h
clang/include/clang/Sema/ScopeInfo.h
clang/lib/AST/ASTImporter.cpp
clang/lib/AST/JSONNodeDumper.cpp
clang/lib/AST/Stmt.cpp
clang/lib/AST/StmtPrinter.cpp
clang/lib/AST/TextNodeDumper.cpp
clang/lib/Analysis/BodyFarm.cpp
clang/lib/Basic/LangOptions.cpp
clang/lib/CodeGen/CGCoroutine.cpp
clang/lib/Sema/Sema.cpp
clang/lib/Sema/SemaDeclCXX.cpp
clang/lib/Sema/SemaExprCXX.cpp
clang/lib/Sema/SemaOpenMP.cpp
clang/lib/Sema/SemaStmt.cpp
clang/lib/Serialization/ASTReaderStmt.cpp
clang/lib/Serialization/ASTWriterStmt.cpp
clang/test/AST/ast-dump-fpfeatures.cpp
Removed:
clang/test/AST/ast-dump-pragma-json.c
clang/test/AST/ast-print-fp-pragmas.c
################################################################################
diff --git a/clang/include/clang/AST/JSONNodeDumper.h b/clang/include/clang/AST/JSONNodeDumper.h
index ed49e0007a189..5638df42a1c50 100644
--- a/clang/include/clang/AST/JSONNodeDumper.h
+++ b/clang/include/clang/AST/JSONNodeDumper.h
@@ -160,7 +160,6 @@ class JSONNodeDumper
std::string createPointerRepresentation(const void *Ptr);
llvm::json::Object createQualType(QualType QT, bool Desugar = true);
llvm::json::Object createBareDeclRef(const Decl *D);
- llvm::json::Object createFPOptions(FPOptionsOverride FPO);
void writeBareDeclRef(const Decl *D);
llvm::json::Object createCXXRecordDefinitionData(const CXXRecordDecl *RD);
llvm::json::Object createCXXBaseSpecifier(const CXXBaseSpecifier &BS);
@@ -318,7 +317,6 @@ class JSONNodeDumper
void VisitGotoStmt(const GotoStmt *GS);
void VisitWhileStmt(const WhileStmt *WS);
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS);
- void VisitCompoundStmt(const CompoundStmt *IS);
void VisitNullTemplateArgument(const TemplateArgument &TA);
void VisitTypeTemplateArgument(const TemplateArgument &TA);
diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h
index 49a66a1ea5b86..653ce4b4b90c5 100644
--- a/clang/include/clang/AST/Stmt.h
+++ b/clang/include/clang/AST/Stmt.h
@@ -19,7 +19,6 @@
#include "clang/Basic/CapturedStmt.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
-#include "clang/Basic/LangOptions.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/ArrayRef.h"
@@ -129,10 +128,6 @@ class alignas(void *) Stmt {
unsigned : NumStmtBits;
- /// True if the compound statement has one or more pragmas that set some
- /// floating-point features.
- unsigned HasFPFeatures : 1;
-
unsigned NumStmts;
};
@@ -1403,9 +1398,8 @@ class NullStmt : public Stmt {
};
/// CompoundStmt - This represents a group of statements like { stmt stmt }.
-class CompoundStmt final
- : public Stmt,
- private llvm::TrailingObjects<CompoundStmt, Stmt *, FPOptionsOverride> {
+class CompoundStmt final : public Stmt,
+ private llvm::TrailingObjects<CompoundStmt, Stmt *> {
friend class ASTStmtReader;
friend TrailingObjects;
@@ -1415,49 +1409,27 @@ class CompoundStmt final
/// The location of the closing "}".
SourceLocation RBraceLoc;
- CompoundStmt(ArrayRef<Stmt *> Stmts, FPOptionsOverride FPFeatures,
- SourceLocation LB, SourceLocation RB);
+ CompoundStmt(ArrayRef<Stmt *> Stmts, SourceLocation LB, SourceLocation RB);
explicit CompoundStmt(EmptyShell Empty) : Stmt(CompoundStmtClass, Empty) {}
void setStmts(ArrayRef<Stmt *> Stmts);
- /// Set FPOptionsOverride in trailing storage. Used only by Serialization.
- void setStoredFPFeatures(FPOptionsOverride F) {
- assert(hasStoredFPFeatures());
- *getTrailingObjects<FPOptionsOverride>() = F;
- }
-
- size_t numTrailingObjects(OverloadToken<Stmt *>) const {
- return CompoundStmtBits.NumStmts;
- }
-
public:
static CompoundStmt *Create(const ASTContext &C, ArrayRef<Stmt *> Stmts,
- FPOptionsOverride FPFeatures, SourceLocation LB,
- SourceLocation RB);
+ SourceLocation LB, SourceLocation RB);
// Build an empty compound statement with a location.
explicit CompoundStmt(SourceLocation Loc)
: Stmt(CompoundStmtClass), LBraceLoc(Loc), RBraceLoc(Loc) {
CompoundStmtBits.NumStmts = 0;
- CompoundStmtBits.HasFPFeatures = 0;
}
// Build an empty compound statement.
- static CompoundStmt *CreateEmpty(const ASTContext &C, unsigned NumStmts,
- bool HasFPFeatures);
+ static CompoundStmt *CreateEmpty(const ASTContext &C, unsigned NumStmts);
bool body_empty() const { return CompoundStmtBits.NumStmts == 0; }
unsigned size() const { return CompoundStmtBits.NumStmts; }
- bool hasStoredFPFeatures() const { return CompoundStmtBits.HasFPFeatures; }
-
- /// Get FPOptionsOverride from trailing storage.
- FPOptionsOverride getStoredFPFeatures() const {
- assert(hasStoredFPFeatures());
- return *getTrailingObjects<FPOptionsOverride>();
- }
-
using body_iterator = Stmt **;
using body_range = llvm::iterator_range<body_iterator>;
diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h
index 2e4bcdd27a8ab..0ecb8a23dfb36 100644
--- a/clang/include/clang/AST/TextNodeDumper.h
+++ b/clang/include/clang/AST/TextNodeDumper.h
@@ -246,7 +246,6 @@ class TextNodeDumper
void VisitLabelStmt(const LabelStmt *Node);
void VisitGotoStmt(const GotoStmt *Node);
void VisitCaseStmt(const CaseStmt *Node);
- void VisitCompoundStmt(const CompoundStmt *Node);
void VisitConstantExpr(const ConstantExpr *Node);
void VisitCallExpr(const CallExpr *Node);
void VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *Node);
diff --git a/clang/include/clang/Basic/LangOptions.h b/clang/include/clang/Basic/LangOptions.h
index 3a1c13dd72568..78335dabfc88c 100644
--- a/clang/include/clang/Basic/LangOptions.h
+++ b/clang/include/clang/Basic/LangOptions.h
@@ -653,8 +653,6 @@ class FPOptions {
private:
storage_type Value;
- FPOptionsOverride getChangesSlow(const FPOptions &Base) const;
-
public:
FPOptions() : Value(0) {
setFPContractMode(LangOptions::FPM_Off);
@@ -745,9 +743,6 @@ class FPOptions {
return Opts;
}
- /// Return
diff erence with the given option set.
- FPOptionsOverride getChangesFrom(const FPOptions &Base) const;
-
// We can define most of the accessors automatically:
#define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
TYPE get##NAME() const { \
@@ -796,8 +791,6 @@ class FPOptionsOverride {
: Options(LO), OverrideMask(OverrideMaskBits) {}
FPOptionsOverride(FPOptions FPO)
: Options(FPO), OverrideMask(OverrideMaskBits) {}
- FPOptionsOverride(FPOptions FPO, FPOptions::storage_type Mask)
- : Options(FPO), OverrideMask(Mask) {}
bool requiresTrailingStorage() const { return OverrideMask != 0; }
@@ -878,12 +871,6 @@ class FPOptionsOverride {
LLVM_DUMP_METHOD void dump();
};
-inline FPOptionsOverride FPOptions::getChangesFrom(const FPOptions &Base) const {
- if (Value == Base.Value)
- return FPOptionsOverride();
- return getChangesSlow(Base);
-}
-
/// Describes the kind of translation unit being processed.
enum TranslationUnitKind {
/// The translation unit is a complete translation unit.
diff --git a/clang/include/clang/Sema/ScopeInfo.h b/clang/include/clang/Sema/ScopeInfo.h
index 18848c8d8a456..08bf53d22f8a4 100644
--- a/clang/include/clang/Sema/ScopeInfo.h
+++ b/clang/include/clang/Sema/ScopeInfo.h
@@ -74,12 +74,7 @@ class CompoundScopeInfo {
/// expression.
bool IsStmtExpr;
- /// FP options at the beginning of the compound statement, prior to
- /// any pragma.
- FPOptions InitialFPFeatures;
-
- CompoundScopeInfo(bool IsStmtExpr, FPOptions FPO)
- : IsStmtExpr(IsStmtExpr), InitialFPFeatures(FPO) {}
+ CompoundScopeInfo(bool IsStmtExpr) : IsStmtExpr(IsStmtExpr) {}
void setHasEmptyLoopBodies() {
HasEmptyLoopBodies = true;
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index e9730112eaa35..8d930ead97d3e 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -6339,10 +6339,9 @@ ExpectedStmt ASTNodeImporter::VisitCompoundStmt(CompoundStmt *S) {
if (!ToRBracLocOrErr)
return ToRBracLocOrErr.takeError();
- FPOptionsOverride FPO =
- S->hasStoredFPFeatures() ? S->getStoredFPFeatures() : FPOptionsOverride();
- return CompoundStmt::Create(Importer.getToContext(), ToStmts, FPO,
- *ToLBracLocOrErr, *ToRBracLocOrErr);
+ return CompoundStmt::Create(
+ Importer.getToContext(), ToStmts,
+ *ToLBracLocOrErr, *ToRBracLocOrErr);
}
ExpectedStmt ASTNodeImporter::VisitCaseStmt(CaseStmt *S) {
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 87e4255c2b934..ae585def4d075 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -1692,18 +1692,3 @@ void JSONNodeDumper::visitVerbatimLineComment(
const comments::VerbatimLineComment *C, const comments::FullComment *) {
JOS.attribute("text", C->getText());
}
-
-llvm::json::Object JSONNodeDumper::createFPOptions(FPOptionsOverride FPO) {
- llvm::json::Object Ret;
-#define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
- if (FPO.has##NAME##Override()) \
- Ret.try_emplace(#NAME, static_cast<unsigned>(FPO.get##NAME##Override()));
-#include "clang/Basic/FPOptions.def"
- return Ret;
-}
-
-void JSONNodeDumper::VisitCompoundStmt(const CompoundStmt *S) {
- VisitStmt(S);
- if (S->hasStoredFPFeatures())
- JOS.attribute("fpoptions", createFPOptions(S->getStoredFPFeatures()));
-}
diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp
index 8eae04d0d9fd4..d562717bf6b22 100644
--- a/clang/lib/AST/Stmt.cpp
+++ b/clang/lib/AST/Stmt.cpp
@@ -361,14 +361,11 @@ int64_t Stmt::getID(const ASTContext &Context) const {
return Context.getAllocator().identifyKnownAlignedObject<Stmt>(this);
}
-CompoundStmt::CompoundStmt(ArrayRef<Stmt *> Stmts, FPOptionsOverride FPFeatures,
- SourceLocation LB, SourceLocation RB)
+CompoundStmt::CompoundStmt(ArrayRef<Stmt *> Stmts, SourceLocation LB,
+ SourceLocation RB)
: Stmt(CompoundStmtClass), LBraceLoc(LB), RBraceLoc(RB) {
CompoundStmtBits.NumStmts = Stmts.size();
- CompoundStmtBits.HasFPFeatures = FPFeatures.requiresTrailingStorage();
setStmts(Stmts);
- if (hasStoredFPFeatures())
- setStoredFPFeatures(FPFeatures);
}
void CompoundStmt::setStmts(ArrayRef<Stmt *> Stmts) {
@@ -379,23 +376,18 @@ void CompoundStmt::setStmts(ArrayRef<Stmt *> Stmts) {
}
CompoundStmt *CompoundStmt::Create(const ASTContext &C, ArrayRef<Stmt *> Stmts,
- FPOptionsOverride FPFeatures,
SourceLocation LB, SourceLocation RB) {
void *Mem =
- C.Allocate(totalSizeToAlloc<Stmt *, FPOptionsOverride>(
- Stmts.size(), FPFeatures.requiresTrailingStorage()),
- alignof(CompoundStmt));
- return new (Mem) CompoundStmt(Stmts, FPFeatures, LB, RB);
+ C.Allocate(totalSizeToAlloc<Stmt *>(Stmts.size()), alignof(CompoundStmt));
+ return new (Mem) CompoundStmt(Stmts, LB, RB);
}
-CompoundStmt *CompoundStmt::CreateEmpty(const ASTContext &C, unsigned NumStmts,
- bool HasFPFeatures) {
- void *Mem = C.Allocate(
- totalSizeToAlloc<Stmt *, FPOptionsOverride>(NumStmts, HasFPFeatures),
- alignof(CompoundStmt));
+CompoundStmt *CompoundStmt::CreateEmpty(const ASTContext &C,
+ unsigned NumStmts) {
+ void *Mem =
+ C.Allocate(totalSizeToAlloc<Stmt *>(NumStmts), alignof(CompoundStmt));
CompoundStmt *New = new (Mem) CompoundStmt(EmptyShell());
New->CompoundStmtBits.NumStmts = NumStmts;
- New->CompoundStmtBits.HasFPFeatures = HasFPFeatures;
return New;
}
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp
index 983fd39874f02..61a1513b6a36c 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -128,7 +128,6 @@ namespace {
void PrintRawSEHFinallyStmt(SEHFinallyStmt *S);
void PrintOMPExecutableDirective(OMPExecutableDirective *S,
bool ForceNoStmt = false);
- void PrintFPPragmas(CompoundStmt *S);
void PrintExpr(Expr *E) {
if (E)
@@ -175,73 +174,12 @@ namespace {
/// with no newline after the }.
void StmtPrinter::PrintRawCompoundStmt(CompoundStmt *Node) {
OS << "{" << NL;
- PrintFPPragmas(Node);
for (auto *I : Node->body())
PrintStmt(I);
Indent() << "}";
}
-void StmtPrinter::PrintFPPragmas(CompoundStmt *S) {
- if (!S->hasStoredFPFeatures())
- return;
- FPOptionsOverride FPO = S->getStoredFPFeatures();
- bool FEnvAccess = false;
- if (FPO.hasAllowFEnvAccessOverride()) {
- FEnvAccess = FPO.getAllowFEnvAccessOverride();
- Indent() << "#pragma STDC FENV_ACCESS " << (FEnvAccess ? "ON" : "OFF")
- << NL;
- }
- if (FPO.hasSpecifiedExceptionModeOverride()) {
- LangOptions::FPExceptionModeKind EM =
- FPO.getSpecifiedExceptionModeOverride();
- if (!FEnvAccess || EM != LangOptions::FPE_Strict) {
- Indent() << "#pragma clang fp exceptions(";
- switch (FPO.getSpecifiedExceptionModeOverride()) {
- default:
- break;
- case LangOptions::FPE_Ignore:
- OS << "ignore";
- break;
- case LangOptions::FPE_MayTrap:
- OS << "maytrap";
- break;
- case LangOptions::FPE_Strict:
- OS << "strict";
- break;
- }
- OS << ")\n";
- }
- }
- if (FPO.hasConstRoundingModeOverride()) {
- LangOptions::RoundingMode RM = FPO.getConstRoundingModeOverride();
- Indent() << "#pragma STDC FENV_ROUND ";
- switch (RM) {
- case llvm::RoundingMode::TowardZero:
- OS << "FE_TOWARDZERO";
- break;
- case llvm::RoundingMode::NearestTiesToEven:
- OS << "FE_TONEAREST";
- break;
- case llvm::RoundingMode::TowardPositive:
- OS << "FE_DOWNWARD";
- break;
- case llvm::RoundingMode::TowardNegative:
- OS << "FE_UPWARD";
- break;
- case llvm::RoundingMode::NearestTiesToAway:
- OS << "FE_TONEARESTFROMZERO";
- break;
- case llvm::RoundingMode::Dynamic:
- OS << "FE_DYNAMIC";
- break;
- default:
- llvm_unreachable("Invalid rounding mode");
- }
- OS << NL;
- }
-}
-
void StmtPrinter::PrintRawDecl(Decl *D) {
D->print(OS, Policy, IndentLevel);
}
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 79e9fa6ab86fc..7c48fd2d6d0da 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -2371,9 +2371,3 @@ void TextNodeDumper::VisitBlockDecl(const BlockDecl *D) {
void TextNodeDumper::VisitConceptDecl(const ConceptDecl *D) {
dumpName(D);
}
-
-void TextNodeDumper::VisitCompoundStmt(const CompoundStmt *S) {
- VisitStmt(S);
- if (S->hasStoredFPFeatures())
- printFPOptions(S->getStoredFPFeatures());
-}
diff --git a/clang/lib/Analysis/BodyFarm.cpp b/clang/lib/Analysis/BodyFarm.cpp
index 23d37b881069f..8de69275a4529 100644
--- a/clang/lib/Analysis/BodyFarm.cpp
+++ b/clang/lib/Analysis/BodyFarm.cpp
@@ -134,8 +134,7 @@ BinaryOperator *ASTMaker::makeComparison(const Expr *LHS, const Expr *RHS,
}
CompoundStmt *ASTMaker::makeCompound(ArrayRef<Stmt *> Stmts) {
- return CompoundStmt::Create(C, Stmts, FPOptionsOverride(), SourceLocation(),
- SourceLocation());
+ return CompoundStmt::Create(C, Stmts, SourceLocation(), SourceLocation());
}
DeclRefExpr *ASTMaker::makeDeclRefExpr(
diff --git a/clang/lib/Basic/LangOptions.cpp b/clang/lib/Basic/LangOptions.cpp
index 753b6bfe18a37..0bf410c053ed9 100644
--- a/clang/lib/Basic/LangOptions.cpp
+++ b/clang/lib/Basic/LangOptions.cpp
@@ -204,15 +204,6 @@ FPOptions FPOptions::defaultWithoutTrailingStorage(const LangOptions &LO) {
return result;
}
-FPOptionsOverride FPOptions::getChangesSlow(const FPOptions &Base) const {
- FPOptions::storage_type OverrideMask = 0;
-#define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
- if (get##NAME() != Base.get##NAME()) \
- OverrideMask |= NAME##Mask;
-#include "clang/Basic/FPOptions.def"
- return FPOptionsOverride(*this, OverrideMask);
-}
-
LLVM_DUMP_METHOD void FPOptions::dump() {
#define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
llvm::errs() << "\n " #NAME " " << get##NAME();
diff --git a/clang/lib/CodeGen/CGCoroutine.cpp b/clang/lib/CodeGen/CGCoroutine.cpp
index 594c7d49df3c0..4216ca1e2f017 100644
--- a/clang/lib/CodeGen/CGCoroutine.cpp
+++ b/clang/lib/CodeGen/CGCoroutine.cpp
@@ -238,8 +238,8 @@ static LValueOrRValue emitSuspendExpression(CodeGenFunction &CGF, CGCoroData &Co
auto Loc = S.getResumeExpr()->getExprLoc();
auto *Catch = new (CGF.getContext())
CXXCatchStmt(Loc, /*exDecl=*/nullptr, Coro.ExceptionHandler);
- auto *TryBody = CompoundStmt::Create(CGF.getContext(), S.getResumeExpr(),
- FPOptionsOverride(), Loc, Loc);
+ auto *TryBody =
+ CompoundStmt::Create(CGF.getContext(), S.getResumeExpr(), Loc, Loc);
TryStmt = CXXTryStmt::Create(CGF.getContext(), Loc, TryBody, Catch);
CGF.EnterCXXTryStmt(*TryStmt);
}
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 326010d4d93fd..e2ec8eec60c33 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -2219,8 +2219,7 @@ operator()(sema::FunctionScopeInfo *Scope) const {
}
void Sema::PushCompoundScope(bool IsStmtExpr) {
- getCurFunction()->CompoundScopes.push_back(
- CompoundScopeInfo(IsStmtExpr, getCurFPFeatures()));
+ getCurFunction()->CompoundScopes.push_back(CompoundScopeInfo(IsStmtExpr));
}
void Sema::PopCompoundScope() {
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 221cbd14da97a..a70c8579c6549 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -15353,8 +15353,8 @@ void Sema::DefineImplicitLambdaToFunctionPointerConversion(
VK_LValue, Conv->getLocation());
assert(FunctionRef && "Can't refer to __invoke function?");
Stmt *Return = BuildReturnStmt(Conv->getLocation(), FunctionRef).get();
- Conv->setBody(CompoundStmt::Create(Context, Return, FPOptionsOverride(),
- Conv->getLocation(), Conv->getLocation()));
+ Conv->setBody(CompoundStmt::Create(Context, Return, Conv->getLocation(),
+ Conv->getLocation()));
Conv->markUsed(Context);
Conv->setReferenced();
@@ -15408,8 +15408,8 @@ void Sema::DefineImplicitLambdaToBlockPointerConversion(
// Set the body of the conversion function.
Stmt *ReturnS = Return.get();
- Conv->setBody(CompoundStmt::Create(Context, ReturnS, FPOptionsOverride(),
- Conv->getLocation(), Conv->getLocation()));
+ Conv->setBody(CompoundStmt::Create(Context, ReturnS, Conv->getLocation(),
+ Conv->getLocation()));
Conv->markUsed(Context);
// We're done; notify the mutation listener, if any.
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 0d73fcf8bf4ec..fadcdc4c6b947 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -7295,9 +7295,8 @@ Stmt *Sema::MaybeCreateStmtWithCleanups(Stmt *SubStmt) {
// a StmtExpr; currently this is only used for asm statements.
// This is hacky, either create a new CXXStmtWithTemporaries statement or
// a new AsmStmtWithTemporaries.
- CompoundStmt *CompStmt =
- CompoundStmt::Create(Context, SubStmt, FPOptionsOverride(),
- SourceLocation(), SourceLocation());
+ CompoundStmt *CompStmt = CompoundStmt::Create(
+ Context, SubStmt, SourceLocation(), SourceLocation());
Expr *E = new (Context)
StmtExpr(CompStmt, Context.VoidTy, SourceLocation(), SourceLocation(),
/*FIXME TemplateDepth=*/0);
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index e4e9858c164bd..262f1ababadd8 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -14454,8 +14454,8 @@ StmtResult Sema::ActOnOpenMPTileDirective(ArrayRef<OMPClause *> Clauses,
SmallVector<Stmt *, 4> BodyParts;
BodyParts.append(LoopHelper.Updates.begin(), LoopHelper.Updates.end());
BodyParts.push_back(Inner);
- Inner = CompoundStmt::Create(Context, BodyParts, FPOptionsOverride(),
- Inner->getBeginLoc(), Inner->getEndLoc());
+ Inner = CompoundStmt::Create(Context, BodyParts, Inner->getBeginLoc(),
+ Inner->getEndLoc());
Inner = new (Context)
ForStmt(Context, InitStmt.get(), CondExpr.get(), nullptr,
IncrStmt.get(), Inner, LoopHelper.Init->getBeginLoc(),
@@ -14729,9 +14729,8 @@ StmtResult Sema::ActOnOpenMPUnrollDirective(ArrayRef<OMPClause *> Clauses,
SmallVector<Stmt *> InnerBodyStmts;
InnerBodyStmts.append(LoopHelper.Updates.begin(), LoopHelper.Updates.end());
InnerBodyStmts.push_back(Body);
- CompoundStmt *InnerBody =
- CompoundStmt::Create(Context, InnerBodyStmts, FPOptionsOverride(),
- Body->getBeginLoc(), Body->getEndLoc());
+ CompoundStmt *InnerBody = CompoundStmt::Create(
+ Context, InnerBodyStmts, Body->getBeginLoc(), Body->getEndLoc());
ForStmt *InnerFor = new (Context)
ForStmt(Context, InnerInit.get(), InnerCond.get(), nullptr,
InnerIncr.get(), InnerBody, LoopHelper.Init->getBeginLoc(),
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index f25694ce48c91..82831a448869d 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -442,16 +442,7 @@ StmtResult Sema::ActOnCompoundStmt(SourceLocation L, SourceLocation R,
DiagnoseEmptyLoopBody(Elts[i], Elts[i + 1]);
}
- // Calculate
diff erence between FP options in this compound statement and in
- // the enclosing one. If this is a function body, take the
diff erence against
- // default options. In this case the
diff erence will indicate options that are
- // changed upon entry to the statement.
- FPOptions FPO = (getCurFunction()->CompoundScopes.size() == 1)
- ? FPOptions(getLangOpts())
- : getCurCompoundScope().InitialFPFeatures;
- FPOptionsOverride FPDiff = getCurFPFeatures().getChangesFrom(FPO);
-
- return CompoundStmt::Create(Context, Elts, FPDiff, L, R);
+ return CompoundStmt::Create(Context, Elts, L, R);
}
ExprResult
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp
index 592b5ebaf2a27..7cd1d34959639 100644
--- a/clang/lib/Serialization/ASTReaderStmt.cpp
+++ b/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -152,14 +152,9 @@ void ASTStmtReader::VisitCompoundStmt(CompoundStmt *S) {
VisitStmt(S);
SmallVector<Stmt *, 16> Stmts;
unsigned NumStmts = Record.readInt();
- unsigned HasFPFeatures = Record.readInt();
- assert(S->hasStoredFPFeatures() == HasFPFeatures);
while (NumStmts--)
Stmts.push_back(Record.readSubStmt());
S->setStmts(Stmts);
- if (HasFPFeatures)
- S->setStoredFPFeatures(
- FPOptionsOverride::getFromOpaqueInt(Record.readInt()));
S->LBraceLoc = readSourceLocation();
S->RBraceLoc = readSourceLocation();
}
@@ -2768,8 +2763,7 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
case STMT_COMPOUND:
S = CompoundStmt::CreateEmpty(
- Context, /*NumStmts=*/Record[ASTStmtReader::NumStmtFields],
- /*HasFPFeatures=*/Record[ASTStmtReader::NumStmtFields + 1]);
+ Context, /*NumStmts=*/Record[ASTStmtReader::NumStmtFields]);
break;
case STMT_CASE:
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp
index 725255cdd2fff..155fe81dd70b1 100644
--- a/clang/lib/Serialization/ASTWriterStmt.cpp
+++ b/clang/lib/Serialization/ASTWriterStmt.cpp
@@ -81,11 +81,8 @@ void ASTStmtWriter::VisitNullStmt(NullStmt *S) {
void ASTStmtWriter::VisitCompoundStmt(CompoundStmt *S) {
VisitStmt(S);
Record.push_back(S->size());
- Record.push_back(S->hasStoredFPFeatures());
for (auto *CS : S->body())
Record.AddStmt(CS);
- if (S->hasStoredFPFeatures())
- Record.push_back(S->getStoredFPFeatures().getAsOpaqueInt());
Record.AddSourceLocation(S->getLBracLoc());
Record.AddSourceLocation(S->getRBracLoc());
Code = serialization::STMT_COMPOUND;
diff --git a/clang/test/AST/ast-dump-fpfeatures.cpp b/clang/test/AST/ast-dump-fpfeatures.cpp
index da0011602a728..8d69b376d9708 100644
--- a/clang/test/AST/ast-dump-fpfeatures.cpp
+++ b/clang/test/AST/ast-dump-fpfeatures.cpp
@@ -141,49 +141,3 @@ float func_15(float x, float y) {
// CHECK: CompoundStmt
// CHECK-NEXT: ReturnStmt
// CHECK-NEXT: BinaryOperator {{.*}} 'float' '+' ConstRoundingMode=towardzero
-
-float func_16(float x, float y) {
-#pragma STDC FENV_ROUND FE_TOWARDZERO
- if (x < 0) {
-#pragma STDC FENV_ROUND FE_UPWARD
- return x - y;
- }
- return x + y;
-}
-
-// CHECK-LABEL: FunctionDecl {{.*}} func_16 'float (float, float)'
-// CHECK: CompoundStmt {{.*}} ConstRoundingMode=towardzero
-// CHECK: IfStmt
-// CHECK: CompoundStmt {{.*}} ConstRoundingMode=upward
-// CHECK: ReturnStmt
-// CHECK: BinaryOperator {{.*}} ConstRoundingMode=upward
-// CHECK: ReturnStmt
-// CHECK: BinaryOperator {{.*}} ConstRoundingMode=towardzero
-
-float func_17(float x, float y) {
-#pragma STDC FENV_ROUND FE_TOWARDZERO
- if (x < 0) {
-#pragma STDC FENV_ROUND FE_TOWARDZERO
- return x - y;
- }
- return x + y;
-}
-
-// CHECK-LABEL: FunctionDecl {{.*}} func_17 'float (float, float)'
-// CHECK: CompoundStmt {{.*}} ConstRoundingMode=towardzero
-// CHECK: IfStmt
-// CHECK: CompoundStmt {{.*}}
-// CHECK: ReturnStmt
-// CHECK: BinaryOperator {{.*}} ConstRoundingMode=towardzero
-// CHECK: ReturnStmt
-// CHECK: BinaryOperator {{.*}} ConstRoundingMode=towardzero
-
-#pragma STDC FENV_ROUND FE_DOWNWARD
-float func_18(float x, float y) {
- return x + y;
-}
-
-// CHECK-LABEL: FunctionDecl {{.*}} func_18 'float (float, float)'
-// CHECK: CompoundStmt {{.*}} ConstRoundingMode=downward
-// CHECK: ReturnStmt
-// CHECK: BinaryOperator {{.*}} ConstRoundingMode=downward
diff --git a/clang/test/AST/ast-dump-pragma-json.c b/clang/test/AST/ast-dump-pragma-json.c
deleted file mode 100644
index c2ab154e6402b..0000000000000
--- a/clang/test/AST/ast-dump-pragma-json.c
+++ /dev/null
@@ -1,485 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
-
-float func_16(float x, float y) {
- #pragma STDC FENV_ROUND FE_TOWARDZERO
- if (x < 0) {
- #pragma STDC FENV_ROUND FE_UPWARD
- return x - y;
- }
- return x + y;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=CompoundStmt
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 116,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 249,
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "fpoptions": {
-// CHECK-NEXT: "ConstRoundingMode": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 160,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 231,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToFloating",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 171,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 231,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "fpoptions": {
-// CHECK-NEXT: "ConstRoundingMode": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 215,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 235,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-print-fp-pragmas.c b/clang/test/AST/ast-print-fp-pragmas.c
deleted file mode 100644
index 6d64b6af8c62b..0000000000000
--- a/clang/test/AST/ast-print-fp-pragmas.c
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s
-
-float func_1(float x, float y) {
-#pragma STDC FENV_ACCESS ON
- if (x != 0) {
- return y;
- }
- return x + y;
-}
-
-// CHECK-LABEL: float func_1(float x, float y) {
-// CHECK-NEXT: #pragma STDC FENV_ACCESS ON
-// CHECK-NEXT: if (x != 0) {
-// CHECK-NEXT: return y;
-// CHECK-NEXT: }
-// CHECK-NEXT: return x + y;
-// CHECK-NEXT: }
-
-float func_2(float x, float y) {
-#pragma STDC FENV_ACCESS ON
- if (x != 0) {
- #pragma STDC FENV_ACCESS OFF
- return y;
- }
- return x + y;
-}
-
-// CHECK-LABEL: float func_2(float x, float y) {
-// CHECK-NEXT: #pragma STDC FENV_ACCESS ON
-// CHECK-NEXT: if (x != 0) {
-// CHECK-NEXT: #pragma STDC FENV_ACCESS OFF
-// CHECK-NEXT: return y;
-// CHECK-NEXT: }
-// CHECK-NEXT: return x + y;
-// CHECK-NEXT: }
-
-float func_3(float x, float y) {
-#pragma STDC FENV_ROUND FE_DOWNWARD
- return x + y;
-}
-
-// CHECK-LABEL: float func_3(float x, float y) {
-// CHECK-NEXT: #pragma STDC FENV_ROUND FE_UPWARD
-// CHECK-NEXT: return x + y;
-// CHECK-NEXT: }
-
-float func_4(float x, float y, float z) {
-#pragma STDC FENV_ACCESS ON
-#pragma clang fp exceptions(maytrap)
-#pragma STDC FENV_ROUND FE_UPWARD
- if (z != 0) {
- #pragma STDC FENV_ACCESS OFF
- #pragma STDC FENV_ROUND FE_TOWARDZERO
- return z + x;
- }
- return x + y;
-}
-
-// CHECK-LABEL: float func_4(float x, float y, float z) {
-// CHECK-NEXT: #pragma STDC FENV_ACCESS ON
-// CHECK-NEXT: #pragma clang fp exceptions(maytrap)
-// CHECK-NEXT: #pragma STDC FENV_ROUND FE_DOWNWARD
-// CHECK-NEXT: if (z != 0) {
-// CHECK-NEXT: #pragma STDC FENV_ACCESS OFF
-// CHECK-NEXT: #pragma STDC FENV_ROUND FE_TOWARDZERO
-// CHECK-NEXT: return z + x;
-// CHECK-NEXT: }
-// CHECK-NEXT: return x + y;
-// CHECK-NEXT: }
More information about the cfe-commits
mailing list