[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:14:22 PST 2012


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/9ade42ad/attachment.html>


More information about the cfe-commits mailing list