diff options
author | Jakub Jelinek <jakub@redhat.com> | 2000-09-26 16:14:34 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2000-09-26 16:14:34 +0200 |
commit | 380f6ad3dde6db991434068c4f3776c6762fa564 (patch) | |
tree | c66fd909916f4fb25cf38ae1e3b3e4138d184a79 | |
parent | ef120fc0497b70180caf53e40eb1ea3eb00e0507 (diff) | |
download | gcc-380f6ad3dde6db991434068c4f3776c6762fa564.zip gcc-380f6ad3dde6db991434068c4f3776c6762fa564.tar.gz gcc-380f6ad3dde6db991434068c4f3776c6762fa564.tar.bz2 |
sparc.c (sparc_emit_set_const64): Don't abort when op0 is a SUBREG.
* config/sparc/sparc.c (sparc_emit_set_const64): Don't abort when
op0 is a SUBREG.
(function_arg_slotno): Accept TImode/CTImode.
* config/sparc/sparc.h (MIN_UNITS_PER_WORD): If IN_LIBGCC2 define
to UNITS_PER_WORD.
* gcc.c-torture/compile/20000923-1.c: New test.
From-SVN: r36645
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 14 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.h | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20000923-1.c | 8 |
5 files changed, 34 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c8b234..3a7a28e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-09-26 Jakub Jelinek <jakub@redhat.com> + + * config/sparc/sparc.c (sparc_emit_set_const64): Don't abort when + op0 is a SUBREG. + (function_arg_slotno): Accept TImode/CTImode. + * config/sparc/sparc.h (MIN_UNITS_PER_WORD): If IN_LIBGCC2 define + to UNITS_PER_WORD. + 2000-09-26 Michael Hayes <mhayes@cygnus.com> * flow.c (flow_loop_pre_header_scan): Punt if loop enters diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 82e9a74..ec3329b 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -1832,12 +1832,17 @@ sparc_emit_set_const64 (op0, op1) rtx temp; /* Sanity check that we know what we are working with. */ - if (! TARGET_ARCH64 - || GET_CODE (op0) != REG - || (REGNO (op0) >= SPARC_FIRST_FP_REG - && REGNO (op0) <= SPARC_LAST_V9_FP_REG)) + if (! TARGET_ARCH64) abort (); + if (GET_CODE (op0) != SUBREG) + { + if (GET_CODE (op0) != REG + || (REGNO (op0) >= SPARC_FIRST_FP_REG + && REGNO (op0) <= SPARC_LAST_V9_FP_REG)) + abort (); + } + if (reload_in_progress || reload_completed) temp = op0; else @@ -3971,6 +3976,7 @@ function_arg_slotno (cum, mode, type, named, incoming_p, pregno, ppadding) case HImode : case CHImode : case SImode : case CSImode : case DImode : case CDImode : + case TImode : case CTImode : if (slotno >= SPARC_INT_ARG_MAX) return -1; regno = regbase + slotno; diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index 2004c60..aedccd1 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -765,7 +765,11 @@ extern struct sparc_cpu_select sparc_select[]; /* Width of a word, in units (bytes). */ #define UNITS_PER_WORD (TARGET_ARCH64 ? 8 : 4) +#ifdef IN_LIBGCC2 +#define MIN_UNITS_PER_WORD UNITS_PER_WORD +#else #define MIN_UNITS_PER_WORD 4 +#endif /* Now define the sizes of the C data types. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e3fb537..3d9863b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-09-26 Jakub Jelinek <jakub@redhat.com> + + * gcc.c-torture/compile/20000923-1.c: New test. + 2000-09-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr> * g++.old-deja/g++.other/crash20.C: Make ready for libstdc++-v3. diff --git a/gcc/testsuite/gcc.c-torture/compile/20000923-1.c b/gcc/testsuite/gcc.c-torture/compile/20000923-1.c new file mode 100644 index 0000000..9ed9886 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20000923-1.c @@ -0,0 +1,8 @@ +const int a = 3; +const int b = 50; + +void foo (void) +{ + long int x[a][b]; + asm ("" : : "r" (x) : "memory"); +} |