summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/stmt.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/stmt.c')
-rw-r--r--contrib/gcc/stmt.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/contrib/gcc/stmt.c b/contrib/gcc/stmt.c
index 671e98a..279691b 100644
--- a/contrib/gcc/stmt.c
+++ b/contrib/gcc/stmt.c
@@ -136,9 +136,19 @@ label_rtx (tree label)
if (!DECL_RTL_SET_P (label))
{
rtx r = gen_label_rtx ();
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
+ unsigned align = DECL_ALIGN_UNIT (label);
+ int align_log2 = exact_log2 (align);
+
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
SET_DECL_RTL (label, r);
if (FORCED_LABEL (label) || DECL_NONLOCAL (label))
LABEL_PRESERVE_P (r) = 1;
+/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \
+
+ if (align_log2 >= 0 && align_log2 <= 0xFF)
+ SET_LABEL_ALIGN (r, align_log2, align - 1);
+/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \
}
return DECL_RTL (label);
@@ -194,11 +204,12 @@ expand_computed_goto (tree exp)
/* Specify the location in the RTL code of a label LABEL,
which is a LABEL_DECL tree node.
- This is used for the kind of label that the user can jump to with a
- goto statement, and for alternatives of a switch or case statement.
- RTL labels generated for loops and conditionals don't go through here;
- they are generated directly at the RTL level, by other functions below.
+ APPLE LOCAL begin for-fsf-4_4 3274130 5295549
+ This is used for those labels created by the front-end that survive
+ through CFG generation, including all user labels. (Some labels
+ are removed by cleanup_dead_labels in tree-cfg.c.)
+ APPLE LOCAL end for-fsf-4_4 3274130 5295549
Note that this has nothing to do with defining label *names*.
Languages vary in how they do that and what that even means. */
OpenPOWER on IntegriCloud