mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-09 05:16:48 +08:00
read-rtl.c (ISDIGIT, ISSPACE): Make sure we have these.
* read-rtl.c (ISDIGIT, ISSPACE): Make sure we have these. (validate_const_int): New. (read_rtx): Validate constant integers. * config/i386/i386.md (pmulhrwv4hi3): Use decimal constants. From-SVN: r47187
This commit is contained in:
parent
8b97450d21
commit
53c98b1f0f
@ -1,3 +1,10 @@
|
||||
2001-11-19 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* read-rtl.c (ISDIGIT, ISSPACE): Make sure we have these.
|
||||
(validate_const_int): New.
|
||||
(read_rtx): Validate constant integers.
|
||||
* config/i386/i386.md (pmulhrwv4hi3): Use decimal constants.
|
||||
|
||||
2001-11-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* doc/hostconfig.texi (DUMPFILE_FORMAT): Move into the table.
|
||||
|
@ -19676,10 +19676,10 @@
|
||||
(sign_extend:V4SI
|
||||
(match_operand:V4HI 2 "nonimmediate_operand" "ym")))
|
||||
(vec_const:V4SI
|
||||
(parallel [(const_int 0x8000)
|
||||
(const_int 0x8000)
|
||||
(const_int 0x8000)
|
||||
(const_int 0x8000)])))
|
||||
(parallel [(const_int 32768)
|
||||
(const_int 32768)
|
||||
(const_int 32768)
|
||||
(const_int 32768)])))
|
||||
(const_int 16))))]
|
||||
"TARGET_3DNOW"
|
||||
"pmulhrw\\t{%2, %0|%0, %2}"
|
||||
|
@ -25,6 +25,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "obstack.h"
|
||||
#include "hashtab.h"
|
||||
|
||||
#ifndef ISDIGIT
|
||||
#include <ctype.h>
|
||||
#define ISDIGIT isdigit
|
||||
#define ISSPACE isspace
|
||||
#endif
|
||||
|
||||
#define obstack_chunk_alloc xmalloc
|
||||
#define obstack_chunk_free free
|
||||
|
||||
@ -41,6 +47,7 @@ static void read_escape PARAMS ((struct obstack *, FILE *));
|
||||
static unsigned def_hash PARAMS ((const void *));
|
||||
static int def_name_eq_p PARAMS ((const void *, const void *));
|
||||
static void read_constants PARAMS ((FILE *infile, char *tmp_char));
|
||||
static void validate_const_int PARAMS ((FILE *, const char *));
|
||||
|
||||
/* Subroutines of read_rtx. */
|
||||
|
||||
@ -494,6 +501,28 @@ traverse_md_constants (callback, info)
|
||||
htab_traverse (md_constants, callback, info);
|
||||
}
|
||||
|
||||
static void
|
||||
validate_const_int (infile, string)
|
||||
FILE *infile;
|
||||
const char *string;
|
||||
{
|
||||
const char *cp;
|
||||
int valid = 1;
|
||||
|
||||
cp = string;
|
||||
while (*cp && ISSPACE(*cp))
|
||||
cp++;
|
||||
if (*cp == '-' || *cp == '+')
|
||||
cp++;
|
||||
if (*cp == 0)
|
||||
valid = 0;
|
||||
for (; *cp; cp++)
|
||||
if (! ISDIGIT (*cp))
|
||||
valid = 0;
|
||||
if (!valid)
|
||||
fatal_with_file_and_line (infile, "invalid decimal constant \"%s\"\n", string);
|
||||
}
|
||||
|
||||
/* Read an rtx in printed representation from INFILE
|
||||
and return an actual rtx in core constructed accordingly.
|
||||
read_rtx is not used in the compiler proper, but rather in
|
||||
@ -699,6 +728,7 @@ again:
|
||||
|
||||
case 'w':
|
||||
read_name (tmp_char, infile);
|
||||
validate_const_int(infile, tmp_char);
|
||||
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
|
||||
tmp_wide = atoi (tmp_char);
|
||||
#else
|
||||
@ -720,6 +750,7 @@ again:
|
||||
case 'i':
|
||||
case 'n':
|
||||
read_name (tmp_char, infile);
|
||||
validate_const_int(infile, tmp_char);
|
||||
tmp_int = atoi (tmp_char);
|
||||
XINT (return_rtx, i) = tmp_int;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user