[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