Err... *looks again at patch* actually I'm not sure exactly what this changed so it could be both :)
-eric On Thu, Nov 15, 2012 at 9:14 AM, Eric Christopher <[email protected]>wrote: > 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
