]> granicus.if.org Git - clang/commitdiff
build: Add support for DISABLE_DEFAULT_STRICT_ALIASING, which does what one
authorDaniel Dunbar <daniel@zuster.org>
Fri, 4 Feb 2011 02:20:39 +0000 (02:20 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 4 Feb 2011 02:20:39 +0000 (02:20 +0000)
might expect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124848 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/ToolChain.h
lib/Driver/ToolChains.h
lib/Driver/Tools.cpp

index dfd39bc594ed842a5c0dcfaeb2b65099a83568ef..f0012bd851eb65a4ef77b2a74953752f2a5649d0 100644 (file)
@@ -108,11 +108,15 @@ public:
 
   /// IsBlocksDefault - Does this tool chain enable -fblocks by default.
   virtual bool IsBlocksDefault() const { return false; }
-  
+
   /// IsIntegratedAssemblerDefault - Does this tool chain enable -integrated-as
   /// by default.
   virtual bool IsIntegratedAssemblerDefault() const { return false; }
 
+  /// IsStrictAliasingDefault - Does this tool chain use -fstrict-aliasing by
+  /// default.
+  virtual bool IsStrictAliasingDefault() const { return true; }
+
   /// IsObjCDefaultSynthPropertiesDefault - Does this tool chain enable
   /// -fobjc-default-synthesize-properties by default.
   virtual bool IsObjCDefaultSynthPropertiesDefault() const { return false; }
index 005597dccc28d6da8b84e7d44fd628f62d698964..870621268e32875aa0b6313502744f425a0a6697 100644 (file)
@@ -176,6 +176,13 @@ public:
             getTriple().getArch() == llvm::Triple::x86_64);
 #endif
   }
+  virtual bool IsStrictAliasingDefault() const {
+#ifdef DISABLE_DEFAULT_STRICT_ALIASING
+    return false;
+#else
+    return ToolChain::IsStrictAliasingDefault();
+#endif
+  }
   
   virtual bool IsObjCDefaultSynthPropertiesDefault() const {
     // Always allow default synthesized properties on Darwin.
index d1d8873c3a6ae37a47a81aa269f2a12a741a5d1e..f3d2d4b88bdbe19e93b7378bf83beff9247ea951 100644 (file)
@@ -1007,9 +1007,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
   if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss,
                     options::OPT_fno_zero_initialized_in_bss))
     CmdArgs.push_back("-mno-zero-initialized-in-bss");
-  if (Args.hasFlag(options::OPT_fno_strict_aliasing,
-                   options::OPT_fstrict_aliasing,
-                   false))
+  if (!Args.hasFlag(options::OPT_fstrict_aliasing,
+                    options::OPT_fno_strict_aliasing,
+                    getToolChain().IsStrictAliasingDefault()))
     CmdArgs.push_back("-relaxed-aliasing");
 
   // Decide whether to use verbose asm. Verbose assembly is the default on