[cfe-commits] r168027 - in /cfe/trunk: include/clang/Basic/LangOptions.def include/clang/Basic/LangOptions.h include/clang/Frontend/CodeGenOptions.def include/clang/Frontend/CodeGenOptions.h lib/CodeGen/BackendUtil.cpp lib/CodeGen/CGExprScalar.cpp lib/Frontend/CompilerInvocation.cpp
Eric Christopher
echristo at gmail.com
Thu Nov 15 09:15:15 PST 2012
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 <echristo at gmail.com>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 <lhames at gmail.com> 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 <dblaikie at gmail.com>wrote:
>>
>>> On Wed, Nov 14, 2012 at 11:51 PM, Lang Hames <lhames at gmail.com> 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
>>> > cfe-commits at cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121115/cab92e92/attachment.html>
More information about the cfe-commits
mailing list