If it's changing codegen (i.e. an IR file would look different) then it's that. I think this is mostly option handling and forwarding so it'd be driver.
-eric On Thu, Nov 15, 2012 at 8:45 AM, Lang Hames <[email protected]> wrote: > 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 > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
