]> granicus.if.org Git - clang/commitdiff
-std=c99 defaults blocks to off even on darwin, but -fblocks overrides
authorChris Lattner <sabre@nondot.org>
Fri, 5 Dec 2008 00:10:44 +0000 (00:10 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 5 Dec 2008 00:10:44 +0000 (00:10 +0000)
even it.

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

Driver/clang.cpp

index 303bfe757f5016dcb864a0614d06d0a7a460956e..c9022e4b57c3e0cd5b13944b39a7ab89dcf3f4e9 100644 (file)
@@ -569,8 +569,16 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
   
   // Mimicing gcc's behavior, trigraphs are only enabled if -trigraphs or -ansi
   // is specified, or -std is set to a conforming mode.  
-  Options.Trigraphs = LangStd < lang_gnu_START || Trigraphs ? 1 : 0;
-
+  Options.Trigraphs = LangStd < lang_gnu_START;
+  if (Trigraphs.getPosition())
+    Options.Trigraphs = Trigraphs;  // Command line option wins.
+
+  // If in a conformant language mode (e.g. -std=c99) Blocks defaults to off
+  // even if they are normally on for the target.  In GNU modes (e.g.
+  // -std=gnu99) the default for blocks depends on the target settings.
+  if (LangStd < lang_gnu_START)
+    Options.Blocks = 0;
+  
   Options.DollarIdents = 1;  // FIXME: Really a target property.
   if (PascalStrings.getPosition())
     Options.PascalStrings = PascalStrings;