diff options
author | echristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-02 00:04:35 +0000 |
---|---|---|
committer | echristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-05-02 00:04:35 +0000 |
commit | 05154761be319de895195809e92cbcae2dd71d75 (patch) | |
tree | c20ccd575f9cfff07c5d915bcf7441bfbfcb4cc1 | |
parent | d8e6a5664e5473d99a85e0e5ce69c7201a619e74 (diff) |
2006-05-01 Eric Christopher <echristo@apple.com>
* global.c (flag_cw_asm_blocks): Declare.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/apple/trunk@113440 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.apple-ppc | 54 | ||||
-rw-r--r-- | gcc/global.c | 51 |
2 files changed, 56 insertions, 49 deletions
diff --git a/gcc/ChangeLog.apple-ppc b/gcc/ChangeLog.apple-ppc index e283b43f3b3..b227d44fc84 100644 --- a/gcc/ChangeLog.apple-ppc +++ b/gcc/ChangeLog.apple-ppc @@ -1,3 +1,7 @@ +2006-05-01 Eric Christopher <echristo@apple.com> + + * global.c (flag_cw_asm_blocks): Declare. + 2006-05-01 Fariborz Jahanian <fjahanian@apple.com> Radar 4512786 @@ -9,7 +13,7 @@ Radar 4512786 * doc/invoke.texi (fobjc-exceptions): Say it is on by default. - + 2006-04-26 Fariborz Jahanian <fjahanian@apple.com> Radar 3803157 (method attributes) @@ -81,7 +85,7 @@ Radar 4498373 (Metadata for objective-c properties) - * config/darwin.c (machopic_select_section): Put metadata + * config/darwin.c (machopic_select_section): Put metadata name/attribute strings in .data section. 2006-03-29 Fariborz Jahanian <fjahanian@apple.com> @@ -98,8 +102,8 @@ * c-common.h (objc_diagnose_private_ivar): New decl. * stub-objc.c (objc_diagnose_private_ivar): New stub. * c-decl.c (undeclared_variable): Issue disnostic on - private 'ivar' access. - + private 'ivar' access. + 2006-03-27 Fariborz Jahanian <fjahanian@apple.com> Radar 4491608 @@ -123,7 +127,7 @@ Radar 4255172 * config/rs6000/darwin.h (PEG_ALIGN_FOR_MAC68K): Move to here from config/darwin.h. Don't test TARGET_ALTIVEC. - * config/darwin.h [RS6000_VECTOR_ALIGNMENT] (PEG_ALIGN_FOR_MAC68K): + * config/darwin.h [RS6000_VECTOR_ALIGNMENT] (PEG_ALIGN_FOR_MAC68K): Move this definition to config/rs6000/darwin.h. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Don't define Altivec PIM macros unless -faltivec. @@ -138,15 +142,15 @@ * c-typeck.c (build_component_ref): Call objc_build_getter_call. (build_modify_expr): Call objc_build_setter_call. * tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): New macro. - * c-common.h: Several new declarations in support of + * c-common.h: Several new declarations in support of objective-c's @property. - * stub-objc.c (objc_set_property_attr, objc_add_property_variable, + * stub-objc.c (objc_set_property_attr, objc_add_property_variable, objc_build_getter_call, objc_build_setter_call): New stubs. - + 2006-03-16 Fariborz Jahanian <fjahanian@apple.com> Radar 4293709 - * c-typeck.c (digest_init): Check for protocol match in + * c-typeck.c (digest_init): Check for protocol match in initialization of two otherwise matching pointers. 2006-03-13 Fariborz Jahanian <fjahanian@apple.com> @@ -154,7 +158,7 @@ Radar 4472881 * c-parse.in: Change grammar code as needed to allow declaration in objective-c's foreach for-loop loop header. - + 2006-03-08 Fariborz Jahanian <fjahanian@apple.com> Radar 4468456 @@ -164,7 +168,7 @@ 2006-03-07 Fariborz Jahanian <fjahanian@apple.com> Radar 4468498 - * c-parse.in (for_objc_collection): Add grammar for non-declarative + * c-parse.in (for_objc_collection): Add grammar for non-declarative form of foreach-statement. 2006-02-28 Fariborz Jahanian <fjahanian@apple.com> @@ -174,7 +178,7 @@ * expr.h (objc_v2_bitfield_ivar_bitpos): New decl. * stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub. * expr.c (get_inner_reference): Compute ivar's bitfield bit offset. - + 2006-02-28 Devang Patel <dpatel@apple.com> Ziemowit Laski <zlaski@apple.com> @@ -205,7 +209,7 @@ * stub-objc.c (diagnose_selector_cast): New stub. * config/darwin-c.c (darwin_cpp_builtins): Define __OBJC2__ for objc's new abi. - + 2006-02-14 Fariborz Jahanian <fjahanian@apple.com> Radar 4441049 @@ -224,7 +228,7 @@ * config/darwin-protos.h: Stuff for new __OBJC2, __protocol section. * config/darwin.c: Ditto. * config/darwin.h: Ditto. - + 2006-02-07 Fariborz Jahanian <fjahanian@apple.com> Radar 4426814 @@ -237,11 +241,11 @@ each __weak object in the expession. * c-typeck.c (build_modify_expr): Undo the call to objc_read_weak on LHS expression. - * c-objc-common.c (c_objc_common_truthvalue_conversion): Generate + * c-objc-common.c (c_objc_common_truthvalue_conversion): Generate objc_read_weak call before generating tree for !exp, etc. * c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl. * stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs. - + 2006-01-30 Fariborz Jahanian <fjahanian@apple.com> Radar 4386773 @@ -253,13 +257,13 @@ 2006-01-26 Devang Patel <dpatel@apple.com> Radar 4388369 - * dbxout.c (dbxout_complete_type): Handle internally volatized + * dbxout.c (dbxout_complete_type): Handle internally volatized types for Objective-C EH mechanism. 2006-01-23 Fariborz Jahanian <fjahanian@apple.com> Radar 4391705 - * config/darwin-protos.h + * config/darwin-protos.h (objc_v2_selector_refs_section): New declaration. * config/darwin.c: use section __OBJC2,__selector_refs for @selector expressions in new-ABI and hybrid-ABI. @@ -273,30 +277,30 @@ * c-parse.in: Add grammar supprt for the foreach initialization part. * c-gimplify.c (obj_reuse_bc_block): New function. - (gimplify_c_loop): Has a new argument to recgognize nested + (gimplify_c_loop): Has a new argument to recgognize nested do-while statement part of foreach-statement synthesis. Use existing continue/break labels for this loop. * c-common.h (DO_FOREACH): New field for a do-while statement. - (objc_finish_foreach_loop, objc_build_component_ref, + (objc_finish_foreach_loop, objc_build_component_ref, objc_build_foreach_components): New declarations. * stub-objc.c: New stubs. - + 2006-01-18 Fariborz Jahanian <fjahanian@apple.com> Radar 4391705 * config/darwin-protos.h: New declarations for new sections. - * config/darwin.c: Generate new symbols in OBJC2 segment in - new sections __category_list, __class_refs, __nonlazy_class + * config/darwin.c: Generate new symbols in OBJC2 segment in + new sections __category_list, __class_refs, __nonlazy_class and __nonlazy_catgry. * config/darwin.h: Define and initialize the above new sections. 2006-01-02 Fariborz Jahanian <fjahanian@apple.com> Radar 4391705 - * config/darwin.h: Change segment and section name of class meta + * config/darwin.h: Change segment and section name of class meta data. (objc_section_init): Initialize OBJC2 sections for new abi only. - + 2005-12-15 Fariborz Jahanian <fjahanian@apple.com> Radar 4229905 diff --git a/gcc/global.c b/gcc/global.c index 251e81a51ef..15d161fd455 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -84,6 +84,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 5. Allocate the variables in that order; each if possible into a preferred register, else into another register. */ +/* APPLE LOCAL CW asm blocks */ +extern int flag_cw_asm_blocks; + /* Number of pseudo-registers which are candidates for allocation. */ static int max_allocno; @@ -264,7 +267,7 @@ static int local_reg_n_refs[FIRST_PSEUDO_REGISTER]; /* APPLE LOCAL begin rewrite weight computation */ #ifdef REWRITE_WEIGHT_COMPUTATION /* Overall weight of each hard reg, as used by local alloc. - This was formerly computed once as + This was formerly computed once as SUM(REG_FREQ(i))/SUM(REG_LIVE_LENGTH(i)) where the sums are computed over all uses. But that computation produces very wrong answers when a reg is used both inside and outside a loop. @@ -601,7 +604,7 @@ global_alloc (FILE *file) conflicts = xcalloc (max_allocno * allocno_row_words, sizeof (INT_TYPE)); /* APPLE LOCAL begin 4321079 */ - pseudo_preferences = + pseudo_preferences = xcalloc (max_allocno * allocno_row_words, sizeof (INT_TYPE)); /* APPLE LOCAL end 4321079 */ @@ -627,17 +630,17 @@ global_alloc (FILE *file) int i, j; for (i = max_allocno - 1; i >= 0; i--) { - EXECUTE_IF_SET_IN_ALLOCNO_SET (pseudo_preferences + EXECUTE_IF_SET_IN_ALLOCNO_SET (pseudo_preferences + i * allocno_row_words, j, { if (REG_N_SETS (allocno[i].reg) == 1 && REG_N_SETS (allocno[j].reg) == 1) { - conflicts[(i) * allocno_row_words + conflicts[(i) * allocno_row_words + (unsigned) (j) / INT_BITS] &= ~((INT_TYPE) 1 << ((unsigned) (j) % INT_BITS)); - conflicts[(j) * allocno_row_words + conflicts[(j) * allocno_row_words + (unsigned) (i) / INT_BITS] &= ~((INT_TYPE) 1 << ((unsigned) (i) % INT_BITS)); } @@ -1037,7 +1040,7 @@ expand_preferences (void) to cut down on the number of reg-reg copies. Since two inputs that both die conflict with each other, we shouldn't tie both. Experimentally, neither picking the first nor the second - seems to be a winner, so we tie neither. + seems to be a winner, so we tie neither. On ppc, this whole idea seems to be a loser; introducing extra dependencies for scheduling loses more than eliminating reg-reg copies gains. We make some attempt to abstract this by looking @@ -1064,9 +1067,9 @@ expand_preferences (void) /* APPLE LOCAL begin 4321079 */ for (j = allocno_row_words - 1; j >= 0; j--) { - pseudo_preferences[a1 * allocno_row_words + j] + pseudo_preferences[a1 * allocno_row_words + j] |= pseudo_preferences[a2 * allocno_row_words + j]; - pseudo_preferences[a2 * allocno_row_words + j] + pseudo_preferences[a2 * allocno_row_words + j] |= pseudo_preferences[a1 * allocno_row_words + j]; } /* APPLE LOCAL end 4321079 */ @@ -1510,7 +1513,7 @@ find_reg (int num, HARD_REG_SET losers, int alt_regs_p, int accept_call_clobbere int k, l; /* Mark tied pseudo-regs that have not yet been assigned a reg and do not conflict as preferring this reg. Mark pseudo-regs - conflicting with regs tied to this reg and not yet assigned a + conflicting with regs tied to this reg and not yet assigned a reg as not preferring this reg. */ EXECUTE_IF_SET_IN_ALLOCNO_SET ( pseudo_preferences + num * allocno_row_words, k, @@ -1533,14 +1536,14 @@ find_reg (int num, HARD_REG_SET losers, int alt_regs_p, int accept_call_clobbere { if (num != k) EXECUTE_IF_SET_IN_ALLOCNO_SET ( - pseudo_preferences + k * allocno_row_words, l, + pseudo_preferences + k * allocno_row_words, l, { - if (k != l && !CONFLICTP (k, l) + if (k != l && !CONFLICTP (k, l) && reg_renumber[allocno[l].reg] < 0) SET_REGBIT (regs_someone_prefers, l, best_reg); }); }); - } + } /* APPLE LOCAL end 4321079 */ } } @@ -1646,13 +1649,13 @@ mirror_conflicts (void) q0++; qq0++; } - for (j = allocno_row_words - 1, q1 = q0, qq1 = qq0; - j >= 0; + for (j = allocno_row_words - 1, q1 = q0, qq1 = qq0; + j >= 0; j--, q1 += rwb, qq1 += rwb) { unsigned INT_TYPE word; - for (word = (unsigned INT_TYPE) *p++, q2 = q1; + for (word = (unsigned INT_TYPE) *p++, q2 = q1; word; word >>= 1, q2 += rw) { @@ -1956,7 +1959,7 @@ set_preference (rtx dest, rtx src) /* APPLE LOCAL begin 4321079 */ /* If both are pseudos record that. We do this only for "copies", as the current focus is to eliminate vector copies where the two - sides have different modes, converted by a SUBREG. + sides have different modes, converted by a SUBREG. Expansion to reusing the input as output is possible, but there seems little advantage; reload handles this OK usually. @@ -1982,7 +1985,7 @@ set_preference (rtx dest, rtx src) /* Callback for reload. We are going to assign pseudo R a stack slot; see if a reg tied to it already has one that we can reuse. */ rtx find_tied_stack_pseudo (int); -rtx +rtx find_tied_stack_pseudo (int r) { int i = reg_allocno[r]; @@ -1991,7 +1994,7 @@ find_tied_stack_pseudo (int r) return 0; EXECUTE_IF_SET_IN_ALLOCNO_SET(pseudo_preferences + i * allocno_row_words, j, { - if (!CONFLICTP(i, j) + if (!CONFLICTP(i, j) && reg_renumber[allocno[j].reg] < 0 && reg_equiv_memory_loc[allocno[j].reg] != 0 /* APPLE LOCAL begin 4405429 */ @@ -2463,7 +2466,7 @@ mark_reg_change (rtx reg, rtx setter, void *data) regno = REGNO (reg); bitmap_set_bit (bb_info->killed, regno); - + if (GET_CODE (setter) != CLOBBER) bitmap_set_bit (bb_info->avloc, regno); else @@ -2532,7 +2535,7 @@ check_earlyclobber (rtx insn) if (i < 0) VARRAY_PUSH_INT (earlyclobber_regclass, (int) class); } - + amp_p = false; class = NO_REGS; break; @@ -2630,7 +2633,7 @@ set_up_bb_rts_numbers (void) { int i; int *rts_order; - + rts_order = xmalloc (sizeof (int) * n_basic_blocks); flow_reverse_top_sort_order_compute (rts_order); for (i = 0; i < n_basic_blocks; i++) @@ -2689,7 +2692,7 @@ calculate_reg_pav (void) edge_iterator ei; struct bb_info *bb_info; bitmap bb_live_pavin, bb_live_pavout; - + bb = bb_array [i]; bb_info = BB_INFO (bb); bb_live_pavin = bb_info->live_pavin; @@ -2763,7 +2766,7 @@ modify_reg_pav (void) FOR_EACH_BB (bb) { bb_info = BB_INFO (bb); - + /* Reload can assign the same hard register to uninitialized pseudo-register and early clobbered pseudo-register in an insn if the pseudo-register is used first time in given BB @@ -2822,7 +2825,7 @@ make_accurate_live_analysis (void) FOR_EACH_BB (bb) { bb_info = BB_INFO (bb); - + bitmap_and_into (bb->global_live_at_start, bb_info->live_pavin); bitmap_and_into (bb->global_live_at_end, bb_info->live_pavout); } |