[llvm-commits] [llvm-gcc-4.2] r54207 - in /llvm-gcc-4.2/trunk/gcc: c-opts.c c-typeck.c calls.c cppdefault.c except.c gimplify.c stor-layout.c

Bill Wendling isanbard at gmail.com
Wed Jul 30 00:50:14 PDT 2008


Author: void
Date: Wed Jul 30 02:50:13 2008
New Revision: 54207

URL: http://llvm.org/viewvc/llvm-project?rev=54207&view=rev
Log:
Merges from Apple's GCC 4.2 r148430

Modified:
    llvm-gcc-4.2/trunk/gcc/c-opts.c
    llvm-gcc-4.2/trunk/gcc/c-typeck.c
    llvm-gcc-4.2/trunk/gcc/calls.c
    llvm-gcc-4.2/trunk/gcc/cppdefault.c
    llvm-gcc-4.2/trunk/gcc/except.c
    llvm-gcc-4.2/trunk/gcc/gimplify.c
    llvm-gcc-4.2/trunk/gcc/stor-layout.c

Modified: llvm-gcc-4.2/trunk/gcc/c-opts.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-opts.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-opts.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-opts.c Wed Jul 30 02:50:13 2008
@@ -168,6 +168,8 @@
     case OPT_isysroot:
     case OPT_isystem:
     case OPT_iquote:
+    /* APPLE LOCAL ARM iwithsysroot 4917039 */
+    case OPT_iwithsysroot:
       error ("missing path after %qs", opt);
       break;
 
@@ -918,6 +920,15 @@
       sysroot = arg;
       break;
 
+    /* APPLE LOCAL begin ARM iwithsysroot 4917039 */
+    case OPT_iwithsysroot:
+      if (arg[0] != '/' || !sysroot)
+	add_path (xstrdup (arg), SYSTEM, 0, true);
+      else
+	add_path (concat (sysroot, arg, NULL), SYSTEM, 0, true);
+      break;
+    /* APPLE LOCAL end ARM iwithsysroot 4917039 */
+
     case OPT_isystem:
       add_path (xstrdup (arg), SYSTEM, 0, true);
       break;
@@ -1103,6 +1114,13 @@
   if (flag_inline_functions)
     flag_inline_trees = 2;
 
+  /* APPLE LOCAL begin radar 5811887  - radar 6084601 */
+  /* In all flavors of c99, except for ObjC/ObjC++, blocks are off by default 
+     unless requested via -fblocks. */
+  if (flag_blocks == -1 && flag_iso && !c_dialect_objc())
+    flag_blocks = 0;
+  /* APPLE LOCAL end radar 5811887 - radar 6084601 */
+
   /* APPLE LOCAL begin mainline */
   /* By default we use C99 inline semantics in GNU99 or C99 mode.  C99
      inline semantics are not supported in GNU89 or C89 mode.  */

Modified: llvm-gcc-4.2/trunk/gcc/c-typeck.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-typeck.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/c-typeck.c (original)
+++ llvm-gcc-4.2/trunk/gcc/c-typeck.c Wed Jul 30 02:50:13 2008
@@ -853,6 +853,13 @@
 
   switch (TREE_CODE (t1))
     {
+    /* APPLE LOCAL begin radar 5795493 */
+      case BLOCK_POINTER_TYPE:
+        val = (TREE_CODE (t2) == BLOCK_POINTER_TYPE) && 
+              types_are_block_compatible (TREE_TYPE (t1), TREE_TYPE (t2));
+        break;
+        
+    /* APPLE LOCAL end radar 5795493 */
     case POINTER_TYPE:
       /* Do not remove mode or aliasing information.  */
       if (TYPE_MODE (t1) != TYPE_MODE (t2)
@@ -8749,8 +8756,12 @@
     case TRUTH_OR_EXPR:
     case TRUTH_XOR_EXPR:
       if ((code0 == INTEGER_TYPE || code0 == POINTER_TYPE
+	   /* APPLE LOCAL radar 5928316 */
+	   || code0 == BLOCK_POINTER_TYPE
 	   || code0 == REAL_TYPE || code0 == COMPLEX_TYPE)
 	  && (code1 == INTEGER_TYPE || code1 == POINTER_TYPE
+	      /* APPLE LOCAL radar 5928316 */
+	      || code1 == BLOCK_POINTER_TYPE
 	      || code1 == REAL_TYPE || code1 == COMPLEX_TYPE))
 	{
 	  /* Result of these operations is always an int,

Modified: llvm-gcc-4.2/trunk/gcc/calls.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/calls.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/calls.c (original)
+++ llvm-gcc-4.2/trunk/gcc/calls.c Wed Jul 30 02:50:13 2008
@@ -2117,7 +2117,8 @@
 
   /* Operand 0 is a pointer-to-function; get the type of the function.  */
   funtype = TREE_TYPE (addr);
-  gcc_assert (POINTER_TYPE_P (funtype));
+  /* APPLE LOCAL blocks */
+  gcc_assert (POINTER_TYPE_P (funtype) || TREE_CODE (funtype) == BLOCK_POINTER_TYPE);
   funtype = TREE_TYPE (funtype);
 
   /* APPLE LOCAL begin objc stret methods */

Modified: llvm-gcc-4.2/trunk/gcc/cppdefault.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/cppdefault.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/cppdefault.c (original)
+++ llvm-gcc-4.2/trunk/gcc/cppdefault.c Wed Jul 30 02:50:13 2008
@@ -46,11 +46,6 @@
 /* APPLE LOCAL begin SDK 3886137.  */
 /* Allow -isysroot to override ALL  include patchs. This is done by
    setting add_sysroot for all default inclue paths.  */
-#ifdef CONFIG_DARWIN_H
-#define ADD_SYSROOT 1
-#else
-#define ADD_SYSROOT 0
-#endif
 const struct default_include cpp_include_defaults[]
 #ifdef INCLUDE_DEFAULTS
 = INCLUDE_DEFAULTS;
@@ -58,34 +53,34 @@
 = {
 #ifdef GPLUSPLUS_INCLUDE_DIR
     /* Pick up GNU C++ generic include files.  */
-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ADD_SYSROOT, 0 },
+    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
 #endif
 #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
     /* Pick up GNU C++ target-dependent include files.  */
-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, ADD_SYSROOT, 1 },
+    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
 #endif
 #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
     /* Pick up GNU C++ backward and deprecated include files.  */
-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, ADD_SYSROOT, 0 },
+    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
 #endif
 #ifdef LOCAL_INCLUDE_DIR
     /* /usr/local/include comes before the fixincluded header files.  */
     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
 #endif
 #ifdef PREFIX_INCLUDE_DIR
-    { PREFIX_INCLUDE_DIR, 0, 0, 1, ADD_SYSROOT, 0 },
+    { PREFIX_INCLUDE_DIR, 0, 0, 1, 1, 0 },
 #endif
 #ifdef GCC_INCLUDE_DIR
     /* This is the dir for fixincludes and for gcc's private headers.  */
-    { GCC_INCLUDE_DIR, "GCC", 0, 0, ADD_SYSROOT, 0 },
+    { GCC_INCLUDE_DIR, "GCC", 0, 0, 1, 0 },
 #endif
 #ifdef CROSS_INCLUDE_DIR
     /* One place the target system's headers might be.  */
-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, ADD_SYSROOT, 0 },
+    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 1, 0 },
 #endif
 #ifdef TOOL_INCLUDE_DIR
     /* Another place the target system's headers might be.  */
-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, ADD_SYSROOT, 0 },
+    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 1, 0 },
 #endif
 #ifdef SYSTEM_INCLUDE_DIR
     /* Some systems have an extra dir of include files.  */
@@ -99,7 +94,6 @@
   };
 #endif /* no INCLUDE_DEFAULTS */
 
-#undef ADD_SYSROOT
 /* APPLE LOCAL end SDK 3886137.  */
 
 #ifdef GCC_INCLUDE_DIR

Modified: llvm-gcc-4.2/trunk/gcc/except.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/except.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/except.c (original)
+++ llvm-gcc-4.2/trunk/gcc/except.c Wed Jul 30 02:50:13 2008
@@ -96,8 +96,10 @@
 tree (*lang_eh_runtime_type) (tree);
 
 /* LLVM local begin */
+#ifdef ENABLE_LLVM
 /* Return a type that catches all others */
 tree (*lang_eh_catch_all) (void);
+#endif
 /* LLVM local end */
 
 /* A hash table of label to region number.  */
@@ -260,8 +262,11 @@
 static int t2r_eq (const void *, const void *);
 static hashval_t t2r_hash (const void *);
 static void add_type_for_runtime (tree);
-/* LLVM local */
-/* static tree lookup_type_for_runtime (tree); */
+/* LLVM LOCAL begin */
+#ifndef ENABLE_LLVM
+static tree lookup_type_for_runtime (tree);
+#endif
+/* LLVM LOCAL end */
 
 static void remove_unreachable_regions (rtx);
 
@@ -571,7 +576,8 @@
   region->tree_label = lab;
 }
 
-/* LLVM local begin */
+/* LLVM LOCAL begin */
+#ifdef ENABLE_LLVM
 int
 classify_eh_handler (struct eh_region *region)
 {
@@ -624,7 +630,8 @@
       gcc_unreachable();
     }
 }
-/* LLVM local end */
+#endif
+/* LLVM LOCAL end */
 
 
 void
@@ -1221,8 +1228,12 @@
     }
 }
 
-/* LLVM local */
+/* LLVM LOCAL begin */
+#ifndef ENABLE_LLVM
+static
+#endif
 tree
+/* LLVM LOCAL end */
 lookup_type_for_runtime (tree type)
 {
   tree *slot;
@@ -2650,21 +2661,21 @@
 	 inline a subroutine that contains handlers, and that will
 	 change the value of saw_any_handlers.  */
 
-/* LLVM local begin */
+/* LLVM LOCAL begin */
 #ifndef ENABLE_LLVM
       if ((info && info->saw_any_handlers) || !cfun->after_inlining)
 	{
 #endif
-/* LLVM local end */
+/* LLVM LOCAL end */
 	  add_reachable_handler (info, region, region);
 	  return RNL_CAUGHT;
-/* LLVM local begin */
+/* LLVM LOCAL begin */
 #ifndef ENABLE_LLVM
 	}
       else
 	return RNL_BLOCKED;
 #endif
-/* LLVM local end */
+/* LLVM LOCAL end */
 
     case ERT_THROW:
     case ERT_UNKNOWN:
@@ -2716,12 +2727,12 @@
 	 processing any more of them.  Each cleanup will have an edge
 	 to the next outer cleanup region, so the flow graph will be
 	 accurate.  */
-/* LLVM local */
+/* LLVM LOCAL */
 #ifndef ENABLE_LLVM
       if (region->type == ERT_CLEANUP)
 	region = region->u.cleanup.prev_try;
       else
-/* LLVM local */
+/* LLVM LOCAL */
 #endif
 	region = region->outer;
     }
@@ -4060,7 +4071,8 @@
 default_init_unwind_resume_libfunc (void)
 {
   /* The default c++ routines aren't actually c++ specific, so use those.  */
-  /* LLVM local begin */
+  /* LLVM LOCAL begin */
+#ifdef ENABLE_LLVM
   llvm_unwind_resume_libfunc = llvm_init_one_libfunc ( USING_SJLJ_EXCEPTIONS ?
                                                "_Unwind_SjLj_Resume"
 #ifdef LLVM_STACKSENSITIVE_UNWIND_RESUME
@@ -4068,7 +4080,12 @@
 #else
                                                : "_Unwind_Resume");
 #endif
-  /* LLVM local end */
+#else
+  unwind_resume_libfunc =
+    init_one_libfunc ( USING_SJLJ_EXCEPTIONS ? "_Unwind_SjLj_Resume"
+					     : "_Unwind_Resume");
+#endif
+  /* LLVM LOCAL end */
 }
 
 

Modified: llvm-gcc-4.2/trunk/gcc/gimplify.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/gimplify.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/gimplify.c (original)
+++ llvm-gcc-4.2/trunk/gcc/gimplify.c Wed Jul 30 02:50:13 2008
@@ -1775,8 +1775,11 @@
 	     gimplified.  */
         /* LLVM LOCAL begin */
         /* Handle the LLVM extension that allows: (ARRAY_REF ptr, idx) */
-	  if (!TREE_OPERAND (t, 2) && 
-              TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == ARRAY_TYPE)
+	  if (!TREE_OPERAND (t, 2)
+#ifdef ENABLE_LLVM
+              && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == ARRAY_TYPE
+#endif
+              )
         /* LLVM LOCAL end */
 	    {
 	      tree low = unshare_expr (array_ref_low_bound (t));
@@ -1791,8 +1794,11 @@
 
           /* LLVM LOCAL begin */
           /* Handle the LLVM extension that allows: (ARRAY_REF ptr, idx) */
-          if (!TREE_OPERAND (t, 3) &&
-              TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == ARRAY_TYPE)
+          if (!TREE_OPERAND (t, 3)
+#ifdef ENABLE_LLVM
+              && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == ARRAY_TYPE
+#endif
+              )
             /* LLVM LOCAL end */
 	    {
 	      tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));

Modified: llvm-gcc-4.2/trunk/gcc/stor-layout.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/stor-layout.c?rev=54207&r1=54206&r2=54207&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/stor-layout.c (original)
+++ llvm-gcc-4.2/trunk/gcc/stor-layout.c Wed Jul 30 02:50:13 2008
@@ -533,6 +533,10 @@
 start_record_layout (tree t)
 {
   record_layout_info rli = xmalloc (sizeof (struct record_layout_info_s));
+  /* APPLE LOCAL begin 5946347 ms_struct support */
+  unsigned biggest_alignment = targetm.ms_bitfield_layout_p (t) ?
+    BIGGEST_MS_STRUCT_ALIGNMENT
+    : BIGGEST_ALIGNMENT;
 
   rli->t = t;
 
@@ -541,7 +545,8 @@
      one-byte alignment.  */
   rli->record_align = MAX (BITS_PER_UNIT, TYPE_ALIGN (t));
   rli->unpacked_align = rli->record_align;
-  rli->offset_align = MAX (rli->record_align, BIGGEST_ALIGNMENT);
+  rli->offset_align = MAX (rli->record_align, biggest_alignment);
+  /* APPLE LOCAL end 5946347 ms_struct support */
 
 #ifdef STRUCTURE_SIZE_BOUNDARY
 /* APPLE LOCAL begin ARM Macintosh alignment */
@@ -729,7 +734,8 @@
 		 && DECL_BIT_FIELD_TYPE (rli->prev_field)
 		 && ! integer_zerop (DECL_SIZE (rli->prev_field)))))
 	{
-	  unsigned int type_align = TYPE_ALIGN (type);
+	  /* APPLE LOCAL 5946347 ms_struct support */
+	  unsigned int type_align = TARGET_FIELD_MS_STRUCT_ALIGN (field);
 	  type_align = MAX (type_align, desired_align);
 	  if (maximum_field_alignment != 0)
 	    type_align = MIN (type_align, maximum_field_alignment);
@@ -1267,7 +1273,8 @@
 	    }
 
 	  /* Now align (conventionally) for the new type.  */
-	  type_align = TYPE_ALIGN (TREE_TYPE (field));
+	  /* APPLE LOCAL 5946347 ms_struct support */
+	  type_align = TARGET_FIELD_MS_STRUCT_ALIGN (field);
 
 	  if (maximum_field_alignment != 0)
 	    type_align = MIN (type_align, maximum_field_alignment);
@@ -1879,6 +1886,8 @@
 
     case POINTER_TYPE:
     case REFERENCE_TYPE:
+    /* APPLE LOCAL blocks */
+    case BLOCK_POINTER_TYPE:
       {
 
 	enum machine_mode mode = ((TREE_CODE (type) == REFERENCE_TYPE





More information about the llvm-commits mailing list