Commit ae90e6a3 by Richard Stallman

*** empty log message ***

From-SVN: r202
parent 51bbfa0c
/* Generate attribute information (insn-attr.h) from machine description. /* Generate attribute information (insn-attr.h) from machine description.
Copyright (C) 1989 Free Software Foundation, Inc. Copyright (C) 1991 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu) Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate code from machine description to compute values of attributes. /* Generate code from machine description to compute values of attributes.
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1992 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu) Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GNU CC. This file is part of GNU CC.
...@@ -1072,12 +1072,12 @@ fill_attr (attr) ...@@ -1072,12 +1072,12 @@ fill_attr (attr)
} }
} }
/* Given an expression EXP, see if it is a COND that has a test that checks /* Given an expression EXP, see if it is a COND or IF_THEN_ELSE that has a
relative positions of insns (uses MATCH_DUP or PC). If so, replace it test that checks relative positions of insns (uses MATCH_DUP or PC).
with what is obtained by passing the expression to ADDRESS_FN. If not If so, replace it with what is obtained by passing the expression to
but it is a COND, call this routine recursively on each value (including ADDRESS_FN. If not but it is a COND or IF_THEN_ELSE, call this routine
the default value). Otherwise, return the value returned by NO_ADDRESS_FN recursively on each value (including the default value). Otherwise,
applied to EXP. */ return the value returned by NO_ADDRESS_FN applied to EXP. */
static rtx static rtx
substitute_address (exp, no_address_fn, address_fn) substitute_address (exp, no_address_fn, address_fn)
...@@ -1088,9 +1088,8 @@ substitute_address (exp, no_address_fn, address_fn) ...@@ -1088,9 +1088,8 @@ substitute_address (exp, no_address_fn, address_fn)
int i; int i;
rtx newexp; rtx newexp;
if (GET_CODE (exp) != COND) if (GET_CODE (exp) == COND)
return (*no_address_fn) (exp); {
/* See if any tests use addresses. */ /* See if any tests use addresses. */
address_used = 0; address_used = 0;
for (i = 0; i < XVECLEN (exp, 0); i += 2) for (i = 0; i < XVECLEN (exp, 0); i += 2)
...@@ -1105,15 +1104,36 @@ substitute_address (exp, no_address_fn, address_fn) ...@@ -1105,15 +1104,36 @@ substitute_address (exp, no_address_fn, address_fn)
for (i = 0; i < XVECLEN (exp, 0); i += 2) for (i = 0; i < XVECLEN (exp, 0); i += 2)
{ {
XVECEXP (newexp, 0, i) = XVECEXP (exp, 0, i); XVECEXP (newexp, 0, i) = XVECEXP (exp, 0, i);
XVECEXP (newexp, 0, i + 1) = substitute_address (XVECEXP (exp, 0, i + 1), XVECEXP (newexp, 0, i + 1)
no_address_fn, = substitute_address (XVECEXP (exp, 0, i + 1),
address_fn); no_address_fn, address_fn);
}
XEXP (newexp, 1) = substitute_address (XEXP (exp, 1),
no_address_fn, address_fn);
return newexp;
} }
else if (GET_CODE (exp) == IF_THEN_ELSE)
{
address_used = 0;
walk_attr_value (XEXP (exp, 0));
if (address_used)
return (*address_fn) (exp);
newexp = rtx_alloc (IF_THEN_ELSE);
XEXP (newexp, 0) = substitute_address (XEXP (exp, 0),
no_address_fn, address_fn);
XEXP (newexp, 1) = substitute_address (XEXP (exp, 1), XEXP (newexp, 1) = substitute_address (XEXP (exp, 1),
no_address_fn, address_fn); no_address_fn, address_fn);
XEXP (newexp, 2) = substitute_address (XEXP (exp, 2),
no_address_fn, address_fn);
return newexp; return newexp;
}
return (*no_address_fn) (exp);
} }
/* Make new attributes from the `length' attribute. The following are made, /* Make new attributes from the `length' attribute. The following are made,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- some macros CODE_FOR_... giving the insn_code_number value - some macros CODE_FOR_... giving the insn_code_number value
for each of the defined standard insn names. for each of the defined standard insn names.
Copyright (C) 1987 Free Software Foundation, Inc. Copyright (C) 1987, 1991 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate from machine description: /* Generate from machine description:
- some #define configuration flags. - some #define configuration flags.
Copyright (C) 1987 Free Software Foundation, Inc. Copyright (C) 1987, 1991 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate code from machine description to emit insns as rtl. /* Generate code from machine description to emit insns as rtl.
Copyright (C) 1987-1991 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate code from machine description to extract operands from insn as rtl. /* Generate code from machine description to extract operands from insn as rtl.
Copyright (C) 1987 Free Software Foundation, Inc. Copyright (C) 1987, 1991 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- some flags HAVE_... saying which simple standard instructions are - some flags HAVE_... saying which simple standard instructions are
available for this machine. available for this machine.
Copyright (C) 1987 Free Software Foundation, Inc. Copyright (C) 1987, 1991 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate code from to output assembler insns as recognized from rtl. /* Generate code from to output assembler insns as recognized from rtl.
Copyright (C) 1987, 1988, 1991 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
/* Generate code from machine description to perform peephole optimizations. /* Generate code from machine description to perform peephole optimizations.
Copyright (C) 1987, 1989 Free Software Foundation, Inc. Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
......
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