diff options
author | Richard Henderson <rth@cygnus.com> | 1997-11-04 19:36:53 -0800 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-11-04 20:36:53 -0700 |
commit | f4e31cf56fd572d0c5d4d34746d8d9f1d3ea44d5 (patch) | |
tree | 980b38e87de5e8ef3906be1f877007677c63e51d | |
parent | 3ed18aebe9c37b36249b9b3d8d168ca072ffcedf (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 15 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.md | 2 |
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 |