This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG0baf85c33109: [clang] Set FP options in Sema when instantiating CompoundStmt (authored by sepavloff).
Changed prior to commit: https://reviews.llvm.org/D158158?vs=551044&id=551902#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D158158/new/ https://reviews.llvm.org/D158158 Files: clang/lib/Sema/TreeTransform.h clang/test/SemaCXX/template-64605.cpp Index: clang/test/SemaCXX/template-64605.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/template-64605.cpp @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -ast-dump -ast-dump-filter=b_64605 %s | FileCheck %s + +// https://github.com/llvm/llvm-project/issues/64605 + +#pragma STDC FENV_ACCESS ON +template <typename> +int b_64605() { + int x; + if ((float)0xFFFFFFFF != (float)0x100000000) { + x = 1; + } + return x; +} +int f() { return b_64605<void>(); } + +// CHECK: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating> RoundingMath=1 AllowFEnvAccess=1 +// CHECK-NEXT: IntegerLiteral {{.*}} 4294967295 + +// CHECK: FunctionDecl {{.*}} b_64605 'int ()' implicit_instantiation +// CHECK-NEXT: TemplateArgument type 'void' + +// CHECK: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating> RoundingMath=1 AllowFEnvAccess=1 +// CHECK-NEXT: IntegerLiteral {{.*}} 4294967295 Index: clang/lib/Sema/TreeTransform.h =================================================================== --- clang/lib/Sema/TreeTransform.h +++ clang/lib/Sema/TreeTransform.h @@ -7491,6 +7491,10 @@ TreeTransform<Derived>::TransformCompoundStmt(CompoundStmt *S, bool IsStmtExpr) { Sema::CompoundScopeRAII CompoundScope(getSema()); + Sema::FPFeaturesStateRAII FPSave(getSema()); + if (S->hasStoredFPFeatures()) + getSema().resetFPOptions( + S->getStoredFPFeatures().applyOverrides(getSema().getLangOpts())); const Stmt *ExprResult = S->getStmtExprResult(); bool SubStmtInvalid = false;
Index: clang/test/SemaCXX/template-64605.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/template-64605.cpp @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -ast-dump -ast-dump-filter=b_64605 %s | FileCheck %s + +// https://github.com/llvm/llvm-project/issues/64605 + +#pragma STDC FENV_ACCESS ON +template <typename> +int b_64605() { + int x; + if ((float)0xFFFFFFFF != (float)0x100000000) { + x = 1; + } + return x; +} +int f() { return b_64605<void>(); } + +// CHECK: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating> RoundingMath=1 AllowFEnvAccess=1 +// CHECK-NEXT: IntegerLiteral {{.*}} 4294967295 + +// CHECK: FunctionDecl {{.*}} b_64605 'int ()' implicit_instantiation +// CHECK-NEXT: TemplateArgument type 'void' + +// CHECK: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating> RoundingMath=1 AllowFEnvAccess=1 +// CHECK-NEXT: IntegerLiteral {{.*}} 4294967295 Index: clang/lib/Sema/TreeTransform.h =================================================================== --- clang/lib/Sema/TreeTransform.h +++ clang/lib/Sema/TreeTransform.h @@ -7491,6 +7491,10 @@ TreeTransform<Derived>::TransformCompoundStmt(CompoundStmt *S, bool IsStmtExpr) { Sema::CompoundScopeRAII CompoundScope(getSema()); + Sema::FPFeaturesStateRAII FPSave(getSema()); + if (S->hasStoredFPFeatures()) + getSema().resetFPOptions( + S->getStoredFPFeatures().applyOverrides(getSema().getLangOpts())); const Stmt *ExprResult = S->getStmtExprResult(); bool SubStmtInvalid = false;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits