diff options
author | Chris Lattner <sabre@nondot.org> | 2002-05-29 16:23:28 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2002-05-29 10:23:28 -0600 |
commit | 45b1f7c746372e7dc48d79c9b5089ce12cbef1e5 (patch) | |
tree | f1b44f9766fda4f8d9db58e1db1518dcec79af29 /gcc/ssa.c | |
parent | 049746c29128f9db517609685aab00f030374f8e (diff) | |
download | gcc-45b1f7c746372e7dc48d79c9b5089ce12cbef1e5.zip gcc-45b1f7c746372e7dc48d79c9b5089ce12cbef1e5.tar.gz gcc-45b1f7c746372e7dc48d79c9b5089ce12cbef1e5.tar.bz2 |
ssa.c (rename_insn_1): Rename uses of undefined registers to prevent confusion if/when...
* ssa.c (rename_insn_1): Rename uses of undefined registers to
prevent confusion if/when the register is defined.
From-SVN: r54002
Diffstat (limited to 'gcc/ssa.c')
-rw-r--r-- | gcc/ssa.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -916,18 +916,26 @@ rename_insn_1 (ptr, data) } case REG: - if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)) && - REGNO (x) < ssa_max_reg_num) + if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)) + && REGNO (x) < ssa_max_reg_num) { rtx new_reg = ssa_rename_to_lookup (x); - if (new_reg != NULL_RTX && new_reg != RENAME_NO_RTX) + if (new_reg != RENAME_NO_RTX) { - if (GET_MODE (x) != GET_MODE (new_reg)) - abort (); - *ptr = new_reg; + if (new_reg != NULL_RTX) + { + if (GET_MODE (x) != GET_MODE (new_reg)) + abort (); + *ptr = new_reg; + } + else + { + /* Undefined value used, rename it to a new pseudo register so + that it cannot conflict with an existing register */ + *ptr = gen_reg_rtx (GET_MODE(x)); + } } - /* Else this is a use before a set. Warn? */ } return -1; |