aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1997-11-04 19:36:53 -0800
committerJeff Law <law@gcc.gnu.org>1997-11-04 20:36:53 -0700
commitf4e31cf56fd572d0c5d4d34746d8d9f1d3ea44d5 (patch)
tree980b38e87de5e8ef3906be1f877007677c63e51d
parent3ed18aebe9c37b36249b9b3d8d168ca072ffcedf (diff)
downloadgcc-f4e31cf56fd572d0c5d4d34746d8d9f1d3ea44d5.zip
gcc-f4e31cf56fd572d0c5d4d34746d8d9f1d3ea44d5.tar.gz
gcc-f4e31cf56fd572d0c5d4d34746d8d9f1d3ea44d5.tar.bz2
alpha.c (summarize_insn): Handle ASM_OPERANDS.
* alpha.c (summarize_insn): Handle ASM_OPERANDS. Don't recurse for SUBREG, just fall through. * alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero. * alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake. From-SVN: r16339
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/alpha/alpha.c15
-rw-r--r--gcc/config/alpha/alpha.md2
3 files changed, 20 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e73e87..e275e17 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+Tue Nov 4 20:36:50 1997 Richard Henderson (rth@cygnus.com)
+
+ * alpha.c (summarize_insn): Handle ASM_OPERANDS. Don't recurse
+ for SUBREG, just fall through.
+
+ * alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero.
+
+ * alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake.
+
Tue Nov 4 18:49:42 1997 Jeffrey A Law (law@cygnus.com)
* fixincludes: Fix "hypot" prototype in NeXT math.h.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 88771b9..db40afc 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2848,11 +2848,20 @@ summarize_insn (x, sum, set)
summarize_insn (XEXP (x, 0), sum, 0);
break;
+ case ASM_OPERANDS:
+ for (i = ASM_OPERANDS_INPUT_LENGTH (x) - 1; i >= 0; i--)
+ summarize_insn (ASM_OPERANDS_INPUT (x, i), sum, 0);
+ break;
+
case PARALLEL:
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
summarize_insn (XVECEXP (x, 0, i), sum, 0);
break;
+ case SUBREG:
+ x = SUBREG_REG (x);
+ /* FALLTHRU */
+
case REG:
{
int regno = REGNO (x);
@@ -2888,10 +2897,6 @@ summarize_insn (x, sum, set)
summarize_insn (XEXP (x, 0), sum, 0);
break;
- case SUBREG:
- summarize_insn (SUBREG_REG (x), sum, set);
- break;
-
case CONST_INT: case CONST_DOUBLE:
case SYMBOL_REF: case LABEL_REF: case CONST:
break;
@@ -3022,7 +3027,7 @@ alpha_handle_trap_shadows (insns)
sum.used.i = 0;
sum.used.fp = 0;
sum.used.mem = 0;
- sum.defd = shadow.used;
+ sum.defd = sum.used;
switch (GET_CODE (i))
{
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index c12acfb..8fbb0e3 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -39,7 +39,7 @@
;; The TRAP_TYPE attribute marks instructions that may generate traps
;; (which are imprecise and may need a trapb if software complention
;; is desired).
-(define_attr "trap" "yes,no" (const_string "no"))
+(define_attr "trap" "no,yes" (const_string "no"))
;; For the EV4 we include four function units: ABOX, which computes
;; the address, BBOX, used for branches, EBOX, used for integer