[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
Lang Hames
lhames at gmail.com
Thu Nov 15 08:45:07 PST 2012
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121115/1396badb/attachment.html>
More information about the cfe-commits
mailing list