From c954bd01573a8027f9e07f5a56adc53ff3fc939d Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 14 Feb 1999 15:13:11 -0800 Subject: [PATCH] * i386.c (legitimate_address_p): Verify modes of base and index. From-SVN: r25209 --- gcc/ChangeLog | 4 ++++ gcc/config/i386/i386.c | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0ca76115bd1..16b3998716d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Sun Feb 14 23:12:10 1999 Richard Henderson + + * i386.c (legitimate_address_p): Verify modes of base and index. + Sun Feb 14 23:01:28 1999 Richard Henderson * i386.c (legitimate_pic_address_disp_p): Remove static. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ce05267dfa74..4d279b892a56 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2601,7 +2601,7 @@ legitimate_address_p (mode, addr, strict) } if (GET_CODE (addr) == REG || GET_CODE (addr) == SUBREG) - base = addr; + base = addr; else if (GET_CODE (addr) == PLUS) { @@ -2691,6 +2691,12 @@ legitimate_address_p (mode, addr, strict) return FALSE; } + if (GET_MODE (base) != Pmode) + { + ADDR_INVALID ("Base is not in Pmode.\n", base); + return FALSE; + } + if ((strict && ! REG_OK_FOR_BASE_STRICT_P (base)) || (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (base))) { @@ -2712,6 +2718,12 @@ legitimate_address_p (mode, addr, strict) return FALSE; } + if (GET_MODE (indx) != Pmode) + { + ADDR_INVALID ("Index is not in Pmode.\n", indx); + return FALSE; + } + if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (indx)) || (! strict && ! REG_OK_FOR_INDEX_NONSTRICT_P (indx))) { -- 2.47.2