aboutsummaryrefslogtreecommitdiff
path: root/gcc/ssa.c
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-05-29 16:23:28 +0000
committerJeff Law <law@gcc.gnu.org>2002-05-29 10:23:28 -0600
commit45b1f7c746372e7dc48d79c9b5089ce12cbef1e5 (patch)
treef1b44f9766fda4f8d9db58e1db1518dcec79af29 /gcc/ssa.c
parent049746c29128f9db517609685aab00f030374f8e (diff)
downloadgcc-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.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/gcc/ssa.c b/gcc/ssa.c
index 835bf55..b81a8ac 100644
--- a/gcc/ssa.c
+++ b/gcc/ssa.c
@@ -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;