diff options
author | Bernd Schmidt <bernds@redhat.com> | 2016-05-03 09:35:42 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2016-05-03 09:35:42 +0000 |
commit | f80041efb991e4326971dea550157192f912d9a4 (patch) | |
tree | db4f856ef821d7dc564edeb431dc0da7bf076b30 /gcc/ira.c | |
parent | 1cfcd39eee915a7582adc113fa6e7faac8b943e4 (diff) | |
download | gcc-f80041efb991e4326971dea550157192f912d9a4.zip gcc-f80041efb991e4326971dea550157192f912d9a4.tar.gz gcc-f80041efb991e4326971dea550157192f912d9a4.tar.bz2 |
Fix PR44281, bad RA with global regs.
PR rtl-optimization/44281
* hard-reg-set.h (struct target_hard_regs): New field
x_fixed_nonglobal_reg_set.
(fixed_nonglobal_reg_set): New macro.
* reginfo.c (init_reg_sets_1): Initialize it.
* ira.c (setup_alloc_regs): Use fixed_nonglobal_reg_set instead
of fixed_reg_set.
* df-scan.c (df_insn_refs_collect): Asms may reference global regs.
testsuite/
PR rtl-optimization/44281
* gcc.target/i386/pr44281.c: New test.
From-SVN: r235809
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -512,7 +512,7 @@ setup_alloc_regs (bool use_hard_frame_p) #ifdef ADJUST_REG_ALLOC_ORDER ADJUST_REG_ALLOC_ORDER; #endif - COPY_HARD_REG_SET (no_unit_alloc_regs, fixed_reg_set); + COPY_HARD_REG_SET (no_unit_alloc_regs, fixed_nonglobal_reg_set); if (! use_hard_frame_p) SET_HARD_REG_BIT (no_unit_alloc_regs, HARD_FRAME_POINTER_REGNUM); setup_class_hard_regs (); |