diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2018-04-04 00:04:07 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2018-04-04 00:04:07 -0500 |
commit | aa767e5ded8cb36c531afed39c2107a7901a6de2 (patch) | |
tree | 3a4cb87374ca0990f8c1de18ccc4ca503c5ac332 /system/gcc/lra-pentium.patch | |
parent | da3be25d04ac27c5de7ee08518c0f75360181ba3 (diff) | |
download | packages-aa767e5ded8cb36c531afed39c2107a7901a6de2.tar.gz packages-aa767e5ded8cb36c531afed39c2107a7901a6de2.tar.bz2 packages-aa767e5ded8cb36c531afed39c2107a7901a6de2.tar.xz packages-aa767e5ded8cb36c531afed39c2107a7901a6de2.zip |
system/gcc: add lra-pentium patch and update locale stuff
Diffstat (limited to 'system/gcc/lra-pentium.patch')
-rw-r--r-- | system/gcc/lra-pentium.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/system/gcc/lra-pentium.patch b/system/gcc/lra-pentium.patch new file mode 100644 index 000000000..e876bcc39 --- /dev/null +++ b/system/gcc/lra-pentium.patch @@ -0,0 +1,48 @@ +--- trunk/gcc/lra-assigns.c 2017/03/10 20:53:18 246058 ++++ trunk/gcc/lra-assigns.c 2017/03/10 21:17:13 246059 +@@ -889,6 +889,30 @@ + live_pseudos_reg_renumber[regno] = hard_regno; + } + ++/* Return true iff there is a reason why pseudo SPILL_REGNO should not ++ be spilled. */ ++static bool ++must_not_spill_p (unsigned spill_regno) ++{ ++ if ((pic_offset_table_rtx != NULL ++ && spill_regno == REGNO (pic_offset_table_rtx)) ++ || ((int) spill_regno >= lra_constraint_new_regno_start ++ && ! bitmap_bit_p (&lra_inheritance_pseudos, spill_regno) ++ && ! bitmap_bit_p (&lra_split_regs, spill_regno) ++ && ! bitmap_bit_p (&lra_subreg_reload_pseudos, spill_regno) ++ && ! bitmap_bit_p (&lra_optional_reload_pseudos, spill_regno))) ++ return true; ++ /* A reload pseudo that requires a singleton register class should ++ not be spilled. ++ FIXME: this mitigates the issue on certain i386 patterns, but ++ does not solve the general case where existing reloads fully ++ cover a limited register class. */ ++ if (!bitmap_bit_p (&non_reload_pseudos, spill_regno) ++ && reg_class_size [reg_preferred_class (spill_regno)] == 1) ++ return true; ++ return false; ++} ++ + /* Array used for sorting reload pseudos for subsequent allocation + after spilling some pseudo. */ + static int *sorted_reload_pseudos; +@@ -960,13 +984,7 @@ + /* Spill pseudos. */ + static_p = false; + EXECUTE_IF_SET_IN_BITMAP (&spill_pseudos_bitmap, 0, spill_regno, bi) +- if ((pic_offset_table_rtx != NULL +- && spill_regno == REGNO (pic_offset_table_rtx)) +- || ((int) spill_regno >= lra_constraint_new_regno_start +- && ! bitmap_bit_p (&lra_inheritance_pseudos, spill_regno) +- && ! bitmap_bit_p (&lra_split_regs, spill_regno) +- && ! bitmap_bit_p (&lra_subreg_reload_pseudos, spill_regno) +- && ! bitmap_bit_p (&lra_optional_reload_pseudos, spill_regno))) ++ if (must_not_spill_p (spill_regno)) + goto fail; + else if (non_spilled_static_chain_regno_p (spill_regno)) + static_p = true; |