summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cp/cp-gimplify.c
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2014-01-20 19:37:38 +0000
committerpfg <pfg@FreeBSD.org>2014-01-20 19:37:38 +0000
commit1f607ed1d18c35c3567e76e73ab36d7febd0ff6e (patch)
treeb4444d83964fb2c5f2e877ea9144d67c268428b5 /contrib/gcc/cp/cp-gimplify.c
parentbc9afa8bed10defc3946a9cdd6e3a401db21e437 (diff)
downloadFreeBSD-src-1f607ed1d18c35c3567e76e73ab36d7febd0ff6e.zip
FreeBSD-src-1f607ed1d18c35c3567e76e73ab36d7febd0ff6e.tar.gz
MFC r260014, r260099:
gcc: Add support for label attributes and "unavailable" attribute. Apple GCC has extensions to support for both label attributes and an "unavailable" attribute. These are critical for objc but are also useful in regular C/C++. Obtained from: Apple GCC 4.2 - 5531
Diffstat (limited to 'contrib/gcc/cp/cp-gimplify.c')
-rw-r--r--contrib/gcc/cp/cp-gimplify.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/contrib/gcc/cp/cp-gimplify.c b/contrib/gcc/cp/cp-gimplify.c
index 2be5857..08d4ca0 100644
--- a/contrib/gcc/cp/cp-gimplify.c
+++ b/contrib/gcc/cp/cp-gimplify.c
@@ -188,7 +188,10 @@ gimplify_if_stmt (tree *stmt_p)
loop body as in do-while loops. */
static tree
-gimplify_cp_loop (tree cond, tree body, tree incr, bool cond_is_first)
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
+gimplify_cp_loop (tree cond, tree body, tree incr, tree attrs,
+ bool cond_is_first, tree inner_foreach)
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
{
tree top, entry, exit, cont_block, break_block, stmt_list, t;
location_t stmt_locus;
@@ -223,6 +226,12 @@ gimplify_cp_loop (tree cond, tree body, tree incr, bool cond_is_first)
out of the loop, or to the top of it. If there's no exit condition,
then we just build a jump back to the top. */
exit = build_and_jump (&LABEL_EXPR_LABEL (top));
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
+
+ /* Add the attributes to the 'top' label. */
+ decl_attributes (&LABEL_EXPR_LABEL (top), attrs, 0);
+
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
if (cond && !integer_nonzerop (cond))
{
t = build_bc_goto (bc_break);
@@ -270,8 +279,11 @@ gimplify_for_stmt (tree *stmt_p, tree *pre_p)
if (FOR_INIT_STMT (stmt))
gimplify_and_add (FOR_INIT_STMT (stmt), pre_p);
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
*stmt_p = gimplify_cp_loop (FOR_COND (stmt), FOR_BODY (stmt),
- FOR_EXPR (stmt), 1);
+ FOR_EXPR (stmt), FOR_ATTRIBUTES (stmt), 1,
+ NULL_TREE);
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
}
/* Gimplify a WHILE_STMT node. */
@@ -280,8 +292,11 @@ static void
gimplify_while_stmt (tree *stmt_p)
{
tree stmt = *stmt_p;
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
*stmt_p = gimplify_cp_loop (WHILE_COND (stmt), WHILE_BODY (stmt),
- NULL_TREE, 1);
+ NULL_TREE, WHILE_ATTRIBUTES (stmt), 1,
+ NULL_TREE);
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
}
/* Gimplify a DO_STMT node. */
@@ -290,8 +305,11 @@ static void
gimplify_do_stmt (tree *stmt_p)
{
tree stmt = *stmt_p;
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
*stmt_p = gimplify_cp_loop (DO_COND (stmt), DO_BODY (stmt),
- NULL_TREE, 0);
+ NULL_TREE, DO_ATTRIBUTES (stmt), 0,
+ DO_FOREACH (stmt));
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
}
/* Genericize a SWITCH_STMT by turning it into a SWITCH_EXPR. */
OpenPOWER on IntegriCloud