Commit 63e7fe9b by Jeffrey A Law Committed by Jeff Law

pa.md (reload_peepholes): Make sure operand is a REG before examining REGNO.

        * pa.md (reload_peepholes): Make sure operand is a REG before
        examining REGNO.  Allow general registers too.
Fixes sporatic c-torture failure.

Remove last change to fold-const.c and c-decl.c

From-SVN: r15000
parent eb7b11fd
Fri Aug 29 16:13:51 1997 Jeffrey A Law (law@cygnus.com)
* pa.md (reload_peepholes): Make sure operand is a REG before
examining REGNO. Allow general registers too.
Fri Aug 29 11:42:04 1997 Jim Wilson <wilson@cygnus.com>
* varasm.c (mark_constants): Don't look inside CONST_DOUBLEs.
......@@ -85,11 +90,6 @@ Wed Aug 27 01:56:18 1997 Doug Evans <dje@seba.cygnus.com>
* loop.c (combine_movables): Earlier insns don't match later ones.
* c-decl.c (grokdeclarator): If array index or size calculations
overflow, issue an error.
* fold-const.c (int_const_binop): New static function.
(const_binop, size_binop): Call it.
Wed Aug 27 01:24:25 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
* config/linux.h (CC1_SPEC): Define it only if not defined.
......
......@@ -4672,18 +4672,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
convert (index_type, size),
convert (index_type, size_one_node)));
/* If that overflowed, the array is too big.
??? While a size of INT_MAX+1 technically shouldn't cause
an overflow (because we subtract 1), the overflow is recorded
during the conversion to index_type, before the subtraction.
Handling this case seems like an unnecessary complication. */
if (TREE_OVERFLOW (itype))
{
error ("size of array `%s' is too large", name);
type = error_mark_node;
continue;
}
if (size_varies)
itype = variable_size (itype);
itype = build_index_type (itype);
......@@ -4859,13 +4847,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
/* Now TYPE has the actual type. */
/* Did array size calculations overflow? */
if (TREE_CODE (type) == ARRAY_TYPE
&& TYPE_SIZE (type)
&& TREE_OVERFLOW (TYPE_SIZE (type)))
error ("size of array `%s' is too large", name);
/* If this is declaring a typedef name, return a TYPE_DECL. */
if (specbits & (1 << (int) RID_TYPEDEF))
......
......@@ -4835,8 +4835,8 @@
;; Clean up turds left by reload.
(define_peephole
[(set (match_operand 0 "reg_or_nonsymb_mem_operand" "")
(match_operand 1 "register_operand" "f"))
(set (match_operand 2 "register_operand" "f")
(match_operand 1 "register_operand" "fr"))
(set (match_operand 2 "register_operand" "fr")
(match_dup 0))]
"! TARGET_SOFT_FLOAT
&& GET_CODE (operands[0]) == MEM
......@@ -4844,6 +4844,8 @@
&& GET_MODE (operands[0]) == GET_MODE (operands[1])
&& GET_MODE (operands[0]) == GET_MODE (operands[2])
&& GET_MODE (operands[0]) == DFmode
&& GET_CODE (operands[1]) == REG
&& GET_CODE (operands[2]) == REG
&& REGNO_REG_CLASS (REGNO (operands[1]))
== REGNO_REG_CLASS (REGNO (operands[2]))"
"*
......@@ -4871,9 +4873,9 @@
}")
(define_peephole
[(set (match_operand 0 "register_operand" "f")
[(set (match_operand 0 "register_operand" "fr")
(match_operand 1 "reg_or_nonsymb_mem_operand" ""))
(set (match_operand 2 "register_operand" "f")
(set (match_operand 2 "register_operand" "fr")
(match_dup 1))]
"! TARGET_SOFT_FLOAT
&& GET_CODE (operands[1]) == MEM
......@@ -4881,7 +4883,9 @@
&& GET_MODE (operands[0]) == GET_MODE (operands[1])
&& GET_MODE (operands[0]) == GET_MODE (operands[2])
&& GET_MODE (operands[0]) == DFmode
&& REGNO_REG_CLASS (REGNO (operands[1]))
&& GET_CODE (operands[0]) == REG
&& GET_CODE (operands[2]) == REG
&& REGNO_REG_CLASS (REGNO (operands[0]))
== REGNO_REG_CLASS (REGNO (operands[2]))"
"*
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment