A quick poke through the clang test directory revealed only: ./Frontend/ir-support-codegen.ll ./Frontend/ir-support-errors.ll
What's the policy on adding bitcode test cases to clang? Would this be considered a Codegen test, or a Driver one? - Lang. On Thu, Nov 15, 2012 at 8:35 AM, David Blaikie <[email protected]> wrote: > On Wed, Nov 14, 2012 at 11:51 PM, Lang Hames <[email protected]> wrote: > > Author: lhames > > Date: Thu Nov 15 01:51:26 2012 > > New Revision: 168027 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=168027&view=rev > > Log: > > Make -ffp-contract a codegen option, rather than a laguage option. This > makes > > more sense anyway - it determines how expressions are codegen'd. It also > ensures > > that -ffp-contract=fast has the intended effect when compiling LLVM IR. > > > > Modified: > > cfe/trunk/include/clang/Basic/LangOptions.def > > cfe/trunk/include/clang/Basic/LangOptions.h > > cfe/trunk/include/clang/Frontend/CodeGenOptions.def > > cfe/trunk/include/clang/Frontend/CodeGenOptions.h > > cfe/trunk/lib/CodeGen/BackendUtil.cpp > > cfe/trunk/lib/CodeGen/CGExprScalar.cpp > > cfe/trunk/lib/Frontend/CompilerInvocation.cpp > > (replying not from my phone - now with substantially less mangled > email/headers...) > > Test case? > > > > > Modified: cfe/trunk/include/clang/Basic/LangOptions.def > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.def?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/Basic/LangOptions.def (original) > > +++ cfe/trunk/include/clang/Basic/LangOptions.def Thu Nov 15 01:51:26 > 2012 > > @@ -149,7 +149,6 @@ > > "stack protector mode") > > ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, > SOB_Undefined, > > "signed integer overflow handling") > > -ENUM_LANGOPT(FPContractMode, FPContractModeKind, 2, FPC_On, > "FP_CONTRACT mode") > > > > BENIGN_LANGOPT(InstantiationDepth, 32, 512, > > "maximum template instantiation depth") > > > > Modified: cfe/trunk/include/clang/Basic/LangOptions.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/Basic/LangOptions.h (original) > > +++ cfe/trunk/include/clang/Basic/LangOptions.h Thu Nov 15 01:51:26 2012 > > @@ -56,12 +56,6 @@ > > SOB_Trapping // -ftrapv > > }; > > > > - enum FPContractModeKind { > > - FPC_Off, // Form fused FP ops only where result will not be > affected. > > - FPC_On, // Form fused FP ops according to FP_CONTRACT rules. > > - FPC_Fast // Aggressively fuse FP ops (E.g. FMA). > > - }; > > - > > public: > > clang::ObjCRuntime ObjCRuntime; > > > > > > Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original) > > +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Thu Nov 15 > 01:51:26 2012 > > @@ -49,6 +49,8 @@ > > CODEGENOPT(EmitGcovArcs , 1, 0) ///< Emit coverage data files, > aka. GCDA. > > CODEGENOPT(EmitGcovNotes , 1, 0) ///< Emit coverage "notes" files, > aka GCNO. > > CODEGENOPT(EmitOpenCLArgMetadata , 1, 0) ///< Emit OpenCL kernel arg > metadata. > > +/// \brief FP_CONTRACT mode (on/off/fast). > > +ENUM_CODEGENOPT(FPContractMode, FPContractModeKind, 2, FPC_On) > > CODEGENOPT(ForbidGuardVariables , 1, 0) ///< Issue errors if C++ guard > variables > > ///< are required. > > CODEGENOPT(FunctionSections , 1, 0) ///< Set when -ffunction-sections > is enabled. > > > > Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.h?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/Frontend/CodeGenOptions.h (original) > > +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.h Thu Nov 15 > 01:51:26 2012 > > @@ -65,6 +65,12 @@ > > LocalExecTLSModel > > }; > > > > + enum FPContractModeKind { > > + FPC_Off, // Form fused FP ops only where result will not be > affected. > > + FPC_On, // Form fused FP ops according to FP_CONTRACT rules. > > + FPC_Fast // Aggressively fuse FP ops (E.g. FMA). > > + }; > > + > > /// The code model to use (-mcmodel). > > std::string CodeModel; > > > > > > Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) > > +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Thu Nov 15 01:51:26 2012 > > @@ -381,14 +381,14 @@ > > } > > > > // Set FP fusion mode. > > - switch (LangOpts.getFPContractMode()) { > > - case LangOptions::FPC_Off: > > + switch (CodeGenOpts.getFPContractMode()) { > > + case CodeGenOptions::FPC_Off: > > Options.AllowFPOpFusion = llvm::FPOpFusion::Strict; > > break; > > - case LangOptions::FPC_On: > > + case CodeGenOptions::FPC_On: > > Options.AllowFPOpFusion = llvm::FPOpFusion::Standard; > > break; > > - case LangOptions::FPC_Fast: > > + case CodeGenOptions::FPC_Fast: > > Options.AllowFPOpFusion = llvm::FPOpFusion::Fast; > > break; > > } > > > > Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original) > > +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Thu Nov 15 01:51:26 2012 > > @@ -2217,7 +2217,7 @@ > > > > // Check whether -ffp-contract=on. (If -ffp-contract=off/fast, fusing > is > > // either disabled, or handled entirely by the LLVM backend). > > - if (CGF.getLangOpts().getFPContractMode() != LangOptions::FPC_On) > > + if (CGF.CGM.getCodeGenOpts().getFPContractMode() != > CodeGenOptions::FPC_On) > > return 0; > > > > // We have a potentially fusable op. Look for a mul on one of the > operands. > > > > Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=168027&r1=168026&r2=168027&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) > > +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Thu Nov 15 01:51:26 > 2012 > > @@ -446,6 +446,18 @@ > > } > > } > > > > + if (Arg *A = Args.getLastArg(OPT_ffp_contract)) { > > + StringRef Val = A->getValue(); > > + if (Val == "fast") > > + Opts.setFPContractMode(CodeGenOptions::FPC_Fast); > > + else if (Val == "on") > > + Opts.setFPContractMode(CodeGenOptions::FPC_On); > > + else if (Val == "off") > > + Opts.setFPContractMode(CodeGenOptions::FPC_Off); > > + else > > + Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) > << Val; > > + } > > + > > return Success; > > } > > > > @@ -1140,18 +1152,6 @@ > > Diags.Report(diag::err_drv_invalid_value) > > << Args.getLastArg(OPT_fvisibility)->getAsString(Args) << Vis; > > > > - if (Arg *A = Args.getLastArg(OPT_ffp_contract)) { > > - StringRef Val = A->getValue(); > > - if (Val == "fast") > > - Opts.setFPContractMode(LangOptions::FPC_Fast); > > - else if (Val == "on") > > - Opts.setFPContractMode(LangOptions::FPC_On); > > - else if (Val == "off") > > - Opts.setFPContractMode(LangOptions::FPC_Off); > > - else > > - Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) > << Val; > > - } > > - > > if (Args.hasArg(OPT_fvisibility_inlines_hidden)) > > Opts.InlineVisibilityHidden = 1; > > > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
