[llvm-commits] [llvm-gcc-4.2] r62478 - in /llvm-gcc-4.2/trunk/gcc: c-common.c c-common.h c-parser.c c.opt config/i386/darwin.h config/rs6000/darwin.h

Bill Wendling isanbard at gmail.com
Sun Jan 18 18:22:40 PST 2009


Author: void
Date: Sun Jan 18 20:22:40 2009
New Revision: 62478

URL: http://llvm.org/viewvc/llvm-project?rev=62478&view=rev
Log:
Don't enable the -Wformat flag for everything. Only for C and friends.

Modified:
    llvm-gcc-4.2/trunk/gcc/c-common.c
    llvm-gcc-4.2/trunk/gcc/c-common.h
    llvm-gcc-4.2/trunk/gcc/c-parser.c
    llvm-gcc-4.2/trunk/gcc/c.opt
    llvm-gcc-4.2/trunk/gcc/config/i386/darwin.h
    llvm-gcc-4.2/trunk/gcc/config/rs6000/darwin.h

Modified: llvm-gcc-4.2/trunk/gcc/c-common.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-common.c?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-common.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-common.c Sun Jan 18 20:22:40 2009
@@ -294,6 +294,12 @@
 
 int warn_unknown_pragmas; /* Tri state variable.  */
 
+/* Warn about format/argument anomalies in calls to formatted I/O functions
+   (*printf, *scanf, strftime, strfmon, etc.).  */
+
+/* APPLE LOCAL default to Wformat-security 5764921 */
+int warn_format = 1;
+
 /* Warn about using __null (as NULL in C++) as sentinel.  For code compiled
    with GCC this doesn't matter as __null is guaranteed to have the right
    size.  */
@@ -6243,8 +6249,11 @@
   char *buf;
   if (!current_function_decl)
     {
+      /* APPLE LOCAL begin radar 6411649 */
+      static int global_count;
       buf = (char *)alloca (32);
-      sprintf (buf, "__block_global_%d", unique_count);
+      sprintf (buf, "__block_global_%d", ++global_count);
+      /* APPLE LOCAL end radar 6411649 */
     }
   else
     {
@@ -6254,6 +6263,10 @@
              DECL_CONTEXT (outer_decl) && TREE_CODE (DECL_CONTEXT (outer_decl)) == FUNCTION_DECL)
       /* APPLE LOCAL end radar 6169580 */
         outer_decl = DECL_CONTEXT (outer_decl);
+      /* APPLE LOCAL begin radar 6411649 */
+      if (!unique_count)
+        unique_count = ++DECL_STRUCT_FUNCTION(outer_decl)->unqiue_block_number;
+      /* APPLE LOCAL end radar 6411649 */
       buf = (char *)alloca (IDENTIFIER_LENGTH (DECL_NAME (outer_decl)) + 32); 
       sprintf (buf, "__%s_block_invoke_%d", 
 	       IDENTIFIER_POINTER (DECL_NAME (outer_decl)), unique_count);
@@ -7250,6 +7263,13 @@
 #define U(X) ""
 /* This is used to denote the size for testcase generation.  */
 #define S(X)
+#define X(X) X
+#define T(X) X
+/* Not for x86_64 mode */
+#define NX ""
+/* Not yet implemented by the 64-bit assembler, but is in 32-bit assembler. */
+#define NY ""
+#define C X(",")
 
 #define m8 "m" S("1")
 #define m16 "m" S("2")
@@ -7260,22 +7280,18 @@
 #define r8 "r" S("1")
 #define r16 "r" S("2")
 #define r32 "r" S("4")
-#define r64 U("r" S("8"))
+#define R64 X("r" S("8"))
 #define a8 "a" S("1")
 #define a16 "a" S("2")
 #define a32 "a" S("4")
 #define r16r32 r16 r32
-#define r16r32r64 r16 r32 r64
 #define r8r16r32 r8 r16 r32
 #define rm8 r8 m8
 #define rm16 r16 m16
 #define rm32 r32 m32
-#define rm64 r64 m64
 #define rm8rm16 rm8 rm16
 #define rm8rm16rm32 rm8 rm16 rm32
-#define rm8rm16rm32rm64 rm8 rm16 rm32 rm64
 #define m8m16m32 m8 m16 m32
-#define r32r64 r32 r64
 #define ri8 r8 "i"
 #define ri16 r16 "i"
 #define ri32 r32 "i"
@@ -7285,6 +7301,14 @@
 #define m80fp "m" S("7")
 #define m32fpm64fp m32fp m64fp
 #define m32fpm64fpm80fp m32fp m64fp m80fp
+#define M64 X(m64)
+#define RM64 R64 M64
+#define RI64 X(R64 "i")
+#define r32R64 r32 R64
+#define r16r32R64 r16 r32 R64
+#define rm32RM64 rm32 RM64
+#define rm8rm16rm32RM64 rm8 rm16 rm32 RM64
+#define m8m16m32M64 m8 m16 m32 M64
 #endif
 
 #ifndef TARGET_IASM_REORDER_ARG
@@ -7355,6 +7379,14 @@
 }
 
 #if defined(TARGET_386)
+#undef U
+#undef S
+#undef X
+#undef T
+#undef NX
+#undef NY
+#undef C
+
 #undef m8
 #undef m16
 #undef m32
@@ -7364,22 +7396,18 @@
 #undef r8
 #undef r16
 #undef r32
-#undef r64
+#undef R64
 #undef a8
 #undef a16
 #undef a32
 #undef r16r32
-#undef r16r32r64
 #undef r8r16r32
 #undef rm8
 #undef rm16
 #undef rm32
-#undef rm64
 #undef rm8rm16
 #undef rm8rm16rm32
-#undef rm8rm16rm32rm64
 #undef m8m16m32
-#undef r32r64
 #undef ri8
 #undef ri16
 #undef ri32
@@ -7389,9 +7417,13 @@
 #undef m80fp
 #undef m32fpm64fp
 #undef m32fpm64fpm80fp
-
-#undef U
-#undef S
+#undef M64
+#undef RM64
+#undef r32R64
+#undef r16r32R64
+#undef rm32RM64
+#undef rm8rm16rm32RM64
+#undef m8m16m32M64
 #endif
 
 static void
@@ -7913,14 +7945,18 @@
     e.no_label_map = true;
 #ifdef TARGET_386
   else if (strcasecmp (opcodename, "call") == 0
-	   || strcasecmp (opcodename, "jmp") == 0)
+	   || strncasecmp (opcodename, "j", 1) == 0)
     {
       if (args
 	  && TREE_CODE (TREE_VALUE (args)) != LABEL_DECL
 	  && TREE_CODE (TREE_VALUE (args)) != FUNCTION_DECL)
 	e.modifier = "A";
       else
-	iasm_force_constraint ("X", &e);
+	{
+	  if (TARGET_64BIT)
+	    e.modifier = "l";
+	  iasm_force_constraint ("X", &e);
+	}
     }
 #endif
 
@@ -8149,6 +8185,9 @@
 #ifndef IASM_VALID_PIC
 #define IASM_VALID_PIC(D,E)
 #endif
+#ifndef IASM_RIP
+#define IASM_RIP(X)
+#endif
 
 /* Force the last operand to have constraint C.  */
 
@@ -8240,6 +8279,10 @@
 	 :-( Hope this stays working.  */
       iasm_force_constraint ("X", e);
       modifier = "l";
+#ifdef TARGET_386
+      if (TARGET_64BIT)
+	modifier = "a";
+#endif
       if (e->modifier)
 	{
 	  modifier = e->modifier;
@@ -8355,6 +8398,7 @@
 	      sprintf (buf + strlen (buf), "%s", user_label_prefix);
 	      strcat (buf, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (arg)));
 	    }
+	  IASM_RIP (buf);
 
 	  mark_decl_referenced (arg);
 	}

Modified: llvm-gcc-4.2/trunk/gcc/c-common.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-common.h?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-common.h (original)
+++ llvm-gcc-4.2/trunk/gcc/c-common.h Sun Jan 18 20:22:40 2009
@@ -461,6 +461,11 @@
 
 extern int warn_unknown_pragmas; /* Tri state variable.  */
 
+/* Warn about format/argument anomalies in calls to formatted I/O functions
+   (*printf, *scanf, strftime, strfmon, etc.).  */
+
+extern int warn_format;
+
 /* APPLE LOCAL begin disable_typechecking_for_spec_flag */
 /* This makes type conflicts a warning, instead of an error,
    to work around some problems with SPEC.  */
@@ -1156,8 +1161,6 @@
   tree block_original_ref_decl_list;
   /* APPLE LOCAL radar 5847213 - tree block_original_byref_decl_list is removed. */
   tree block_body;
-  bool hasPrototype;
-  bool isVariadic;
   bool BlockHasCopyDispose;
   /* APPLE LOCAL radar 6214617 */
   bool BlockImportsCxxObjects;

Modified: llvm-gcc-4.2/trunk/gcc/c-parser.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-parser.c?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-parser.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-parser.c Sun Jan 18 20:22:40 2009
@@ -95,9 +95,6 @@
 #define IDENTIFIER 2
 /* APPLE LOCAL end CW asm blocks (in 4.2 g) */
 
-/* APPLE LOCAL radar 6185344 */
-static int parsing_block_return_type;
-
 /* The reserved keyword table.  */
 struct resword
 {
@@ -1077,6 +1074,10 @@
   C_DTR_NORMAL,
   /* An abstract declarator (maybe empty).  */
   C_DTR_ABSTRACT,
+  /* APPLE LOCAL begin blocks 6339747 */
+  /* A block declarator (maybe empty).  */
+  C_DTR_BLOCK,
+  /* APPLE LOCAL end blocks 6339747 */
   /* A parameter declarator: may be either, but after a type name does
      not redeclare a typedef name as an identifier if it can
      alternatively be interpreted as a typedef name; see DR#009,
@@ -2500,6 +2501,18 @@
      parameter-list ;
      parameter-forward-declarations parameter-list ;
 
+     APPLE LOCAL begin blocks 6339747
+   block-declarator:
+     pointer
+     pointer[opt] direct-block-declarator
+
+   direct-block-declarator:
+     ( attributes[opt] block-declarator )
+     direct-block-declarator[opt] array-declarator
+     direct-block-declarator[opt]
+       ( parameter-type-list[opt] ) [opt]
+     APPLE LOCAL end blocks 6339747
+
    The uses of attributes shown above are GNU extensions.
 
    Some forms of array declarator are not included in C99 in the
@@ -2586,7 +2599,8 @@
      ??? Also following the old parser, typedef names may be
      redeclared in declarators, but not Objective-C class names.  */
 
-  if (kind != C_DTR_ABSTRACT
+  /* APPLE LOCAL blocks 6339747 */
+  if ((kind != C_DTR_ABSTRACT && kind != C_DTR_BLOCK)
       && c_parser_next_token_is (parser, CPP_NAME)
       && ((type_seen_p
 	   /* APPLE LOCAL begin radar 4281748 */
@@ -2613,8 +2627,7 @@
   /* Either we are at the end of an abstract declarator, or we have
      parentheses.  */
 
-  /* APPLE LOCAL radar 6185344 */
-  if (!parsing_block_return_type && c_parser_next_token_is (parser, CPP_OPEN_PAREN))
+  if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
     {
       tree attrs;
       struct c_declarator *inner;
@@ -5474,7 +5487,7 @@
 			     assignment-expression )
      __builtin_types_compatible_p ( type-name , type-name )
      APPLE LOCAL blocks (C++ cf)
-     ^ block-literal-expr
+     block-literal-expr
 
    offsetof-member-designator:
      identifier
@@ -9662,11 +9675,11 @@
 	      rest_of_decl_compilation (NSConcreteGlobalBlock_decl, 0, 0);
 	    }
 	}
-      /* LLVM LOCAL begin radar 5865221 */
+      /* APPLE LOCAL begin radar 6457359 */
       initlist = build_tree_list (fields,
                                   convert (ptr_type_node,
                                            build_fold_addr_expr (NSConcreteGlobalBlock_decl)));
-      /* LLVM LOCAL end radar 5865221 */
+      /* APPLE LOCAL end radar 6457359 */
       flags |= BLOCK_IS_GLOBAL;
     }
   else
@@ -9686,11 +9699,11 @@
 	      rest_of_decl_compilation (NSConcreteStackBlock_decl, 0, 0);
 	    }
 	}
-      /* LLVM LOCAL begin radar 5865221 */
+      /* APPLE LOCAL begin radar 6457359 */
       initlist = build_tree_list (fields,
                                   convert (ptr_type_node,
                                            build_fold_addr_expr (NSConcreteStackBlock_decl)));
-      /* LLVM LOCAL end radar 5865221 */
+      /* APPLE LOCAL end radar 6457359 */
     }
   fields = TREE_CHAIN (fields);
 
@@ -9713,11 +9726,11 @@
   fields = TREE_CHAIN (fields);
 
   /* __descriptor */
-  /* LLVM LOCAL begin radar 5865221 */
+  /* APPLE LOCAL begin radar 6457359 */
   initlist = tree_cons (fields,
-			build_fold_addr_expr (descriptor_block_decl),
-			initlist);
-  /* LLVM LOCAL end radar 5865221 */
+                        build_fold_addr_expr (descriptor_block_decl),
+                        initlist);
+  /* APPLE LOCAL end radar 6457359 */
   for (chain = block_impl->block_original_ref_decl_list; chain;
        chain = TREE_CHAIN (chain))
     {
@@ -10025,11 +10038,49 @@
   free (arg_info);
 }
 
-/** c_parser_block_literal_expr - Main routine to process a block literal
-    with the syntax of ^arg-list[OPT] block or ^()expression. It synthesizes
-    the helper function for later generation and builds the necessary data to
-    represent the block literal where it is declared.
-*/
+/* Parse a block-id.
+
+   GNU Extension:
+
+   block-id:
+     specifier-qualifier-list block-declarator
+
+   Returns the DECL specified or implied.  */
+
+static tree
+c_parser_block_id (c_parser* parser)
+{
+  struct c_declspecs *specs = build_null_declspecs ();
+  struct c_declarator *declarator;
+  bool dummy = false;
+
+  c_parser_declspecs (parser, specs, false, true, true);
+  if (!specs->declspecs_seen_p)
+    {
+      c_parser_error (parser, "expected specifier-qualifier-list");
+      return NULL;
+    }
+  pending_xref_error ();
+  finish_declspecs (specs);
+  declarator = c_parser_declarator (parser, specs->type_seen_p,
+				    C_DTR_BLOCK, &dummy);
+  if (declarator == NULL)
+    return NULL;
+
+  return grokblockdecl (specs, declarator);
+}
+
+/* Parse a block-literal-expr.
+
+   GNU Extension:
+
+  block-literal-expr:
+    ^ parameter-declation-clause exception-specification [opt] compound-statement
+    ^ block-id compound-statement
+
+    It synthesizes the helper function for later generation and builds
+    the necessary data to represent the block literal where it is
+    declared.  */
 static tree
 c_parser_block_literal_expr (c_parser* parser)
 {
@@ -10037,7 +10088,7 @@
   static int global_unique_count;
   int unique_count = ++global_unique_count;
   tree block_helper_function_decl;
-  tree expr, body, type, arglist, ftype;
+  tree expr, body, type, arglist = void_list_node, ftype;
   tree self_arg, stmt;
   struct c_arg_info *args = NULL;
   tree arg_type = void_list_node;
@@ -10060,40 +10111,19 @@
     attributes = c_parser_attributes (parser);
   /* APPLE LOCAL end radar 6237713 */
   
-  /* APPLE LOCAL begin radar 6185344 */
-  /* Parse user declared return type. */
-  if (!c_parser_next_token_is (parser, CPP_OPEN_PAREN) &&
-      !c_parser_next_token_is (parser, CPP_OPEN_BRACE))
-  {
-    struct c_type_name *type;
-    /* APPLE LOCAL begin radar 6237713 */
-    if (attributes)
-      {
-        warning (0, "attribute before block type is ignored");
-        attributes = NULL_TREE;
-      }
-    /* APPLE LOCAL end radar 6237713 */
-    parsing_block_return_type = 1;
-    type = c_parser_type_name (parser);
-    parsing_block_return_type = 0;
-    if (type) {
-      declared_block_return_type = groktypename (type);
-    }
-  }
-  /* APPLE LOCAL end radar 6185344 */
-
-  /* Parse the optional argument list */
   if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
     {
+      /* Parse the optional argument list */
       c_parser_consume_token (parser);
       /* Open the scope to collect parameter decls */
       push_scope ();
       args = c_parser_parms_declarator (parser, true, NULL_TREE);
       /* Check for args as it might be NULL due to error. */
-      if (args) {
-	arglist = args->parms;
-	arg_type = args->types;
-      }
+      if (args)
+	{
+	  arglist = args->parms;
+	  arg_type = args->types;
+	}
       else
 	{
 	  pop_scope ();
@@ -10102,8 +10132,28 @@
       open_paren_seen = true;
       pop_scope ();
     }
-  else
-    arglist = build_tree_list (NULL_TREE, void_type_node);
+  else if (c_parser_next_token_is_not (parser, CPP_OPEN_BRACE))
+    {
+      /* Parse user declared return type. */
+      tree decl;
+    
+      /* APPLE LOCAL begin radar 6237713 */
+      if (attributes)
+	{
+	  warning (0, "attributes before block type are ignored");
+	  attributes = NULL_TREE;
+	}
+      /* APPLE LOCAL end radar 6237713 */    
+
+      decl = c_parser_block_id (parser);
+
+      if (decl && decl != error_mark_node)
+	{
+	  arg_type = TYPE_ARG_TYPES (TREE_TYPE (decl));
+	  arglist = DECL_ARGUMENTS (decl);
+	  declared_block_return_type = TREE_TYPE (TREE_TYPE (decl));
+	}
+    }
 
   block = begin_block ();
 
@@ -10117,36 +10167,22 @@
     cur_block->return_type = NULL_TREE;
 
   if (args)
-    {
-      tree list = NULL_TREE;
-      cur_block->arg_info = args;
-      if (arg_type)
-	{
-	  cur_block->hasPrototype = true;
-	  /* This is the only way in gcc to know if argument list ends with ... */
-	  for (list = arg_type; TREE_CHAIN (list); list = TREE_CHAIN (list))
-	    ;
-	  cur_block->isVariadic = (list != void_list_node);
-	}
-      else
-	{
-	  /* K&R syle () argument list. */
-	  cur_block->hasPrototype = false;
-	  cur_block->isVariadic = true;
-	}
-    }
+    cur_block->arg_info = args;
   else
+    cur_block->arg_info = xcalloc (1, sizeof (struct c_arg_info));
+
+  if (declared_block_return_type)
     {
-      cur_block->hasPrototype = false;
-      cur_block->isVariadic = false;
-      cur_block->arg_info = xcalloc (1, sizeof (struct c_arg_info));
+      cur_block->arg_info->parms = arglist;
+      cur_block->arg_info->types = arg_type;
     }
 
-  /* Must also build hidden parameter _self added to the helper
+  /* Must also build hidden parameter .block_descriptor added to the helper
    function, even though we do not know its type yet. */
-  self_arg = build_decl (PARM_DECL, get_identifier ("_self"),
+  /* APPLE LOCAL radar 6404979 */
+  self_arg = build_decl (PARM_DECL, get_identifier (".block_descriptor"),
                          ptr_type_node);
-  TREE_USED (self_arg) = 1;  /* Prevent unused parameter '_self' warning. */
+  TREE_USED (self_arg) = 1;  /* Prevent unused parameter '.block_descriptor' warning. */
   TREE_CHAIN (self_arg) = cur_block->arg_info->parms;
   cur_block->arg_info->types = tree_cons (NULL_TREE, ptr_type_node, arg_type);
   cur_block->arg_info->parms = self_arg;
@@ -10161,8 +10197,8 @@
                                 ? void_type_node : cur_block->return_type),
                                cur_block->arg_info->types);
   /* APPLE LOCAL end radar 6185344 */
-  /* APPLE LOCAL radar 6160536 */
-  block_helper_function_decl = build_helper_func_decl (build_block_helper_name (unique_count),
+  /* APPLE LOCAL radar 6160536 - radar 6411649 */
+  block_helper_function_decl = build_helper_func_decl (build_block_helper_name (0),
                                                          ftype);
   DECL_CONTEXT (block_helper_function_decl) = current_function_decl;
   cur_block->helper_func_decl = block_helper_function_decl;
@@ -10241,7 +10277,7 @@
   if (restype == error_mark_node)
     return clean_and_exit (block);
 
-  /* Now that we know type of the hidden _self argument, fix its type. */
+  /* Now that we know type of the hidden .block_descriptor argument, fix its type. */
   TREE_TYPE (self_arg) = cur_block->block_arg_ptr_type;
   DECL_ARG_TYPE (self_arg) = cur_block->block_arg_ptr_type;
 

Modified: llvm-gcc-4.2/trunk/gcc/c.opt
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c.opt?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c.opt (original)
+++ llvm-gcc-4.2/trunk/gcc/c.opt Sun Jan 18 20:22:40 2009
@@ -225,8 +225,8 @@
 Warn if testing floating point numbers for equality
 
 Wformat
-C ObjC C++ ObjC++ Var(warn_format) Warning
-Warn about format strings
+C ObjC C++ ObjC++
+Warn about printf/scanf/strftime/strfmon format string anomalies
 
 Wformat-extra-args
 C ObjC C++ ObjC++ Var(warn_format_extra_args)
@@ -236,9 +236,11 @@
 C ObjC C++ ObjC++ Var(warn_format_nonliteral)
 Warn about format strings that are not literals
 
+; APPLE LOCAL begin default to Wformat-security 5764921
 Wformat-security
-C ObjC C++ ObjC++ Var(warn_format_security)
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1)
 Warn about possible security problems with format functions
+; APPLE LOCAL end default to Wformat-security 5764921
 
 Wformat-y2k
 C ObjC C++ ObjC++ Var(warn_format_y2k)

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/darwin.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/darwin.h?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/darwin.h Sun Jan 18 20:22:40 2009
@@ -101,9 +101,6 @@
   %{!mmacosx-version-min=*: %{!miphoneos-version-min=*: %(darwin_cc1_minversion)}} \
   "/* APPLE LOCAL ignore -mcpu=G4 -mcpu=G5 */"\
   %<faltivec %<mno-fused-madd %<mlong-branch %<mlongcall %<mcpu=G4 %<mcpu=G5 \
-  "/* APPLE LOCAL enable format security warnings */"\
-  %{!Wno-format:-Wformat} \
-  %{!Wno-format-security:-Wformat-security} \
   %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }}"
 
 /* APPLE LOCAL AltiVec */
@@ -113,7 +110,7 @@
 #undef ASM_SPEC
 /* APPLE LOCAL begin kext weak_import 5935650 */
 #define ASM_SPEC "-arch %(darwin_arch) -force_cpusubtype_ALL \
-  %{mkernel|static|fapple-kext:%{!Zdynamic:-static}}"
+  %{mkernel|static|fapple-kext:%{!m64:-static}}"
 /* APPLE LOCAL end kext weak_import 5935650 */
 
 #define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
@@ -373,9 +370,11 @@
 /* APPLE LOCAL begin CW asm blocks */
 #define IASM_VALID_PIC(DECL, E)						\
   do {									\
-    if (E->as_immediate && ! MACHO_DYNAMIC_NO_PIC_P && flag_pic)	\
+    if (! TARGET_64BIT							\
+	&& E->as_immediate && ! MACHO_DYNAMIC_NO_PIC_P && flag_pic)	\
       warning (0, "non-pic addressing form not suitible for pic code");	\
   } while (0)
+#define IASM_RIP(X) do { if (TARGET_64BIT) strcat (X, "(%%rip)"); } while (0)
 /* APPLE LOCAL end cw asm blocks */
 
 /* APPLE LOCAL KEXT */

Modified: llvm-gcc-4.2/trunk/gcc/config/rs6000/darwin.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/rs6000/darwin.h?rev=62478&r1=62477&r2=62478&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/rs6000/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/rs6000/darwin.h Sun Jan 18 20:22:40 2009
@@ -113,9 +113,6 @@
   %{static: %{Zdynamic: %e conflicting code gen style switches are used}}\
   "/* APPLE LOCAL ARM 5683689 */"\
   %{!mmacosx-version-min=*: %{!miphoneos-version-min=*: %(darwin_cc1_minversion)}} \
-  "/* APPLE LOCAL enable format security warnings */"\
-  %{!Wno-format:-Wformat} \
-  %{!Wno-format-security:-Wformat-security} \
   "/* APPLE LOCAL -fast or -fastf or -fastcp */"\
   %{!mkernel:%{!static:%{!fast:%{!fastf:%{!fastcp:%{!mdynamic-no-pic:-fPIC}}}}}}"
 





More information about the llvm-commits mailing list