aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2000-02-16 14:44:19 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2000-02-16 14:44:19 +0000
commit88a56c2eb1cf04cb828c6c19187a8f9b672e9d26 (patch)
treef65654b8ee4287eb5ff18168ad859bb200b62378
parent1efa676d959734b3f89b174b861895b33da776e8 (diff)
downloadgcc-88a56c2eb1cf04cb828c6c19187a8f9b672e9d26.zip
gcc-88a56c2eb1cf04cb828c6c19187a8f9b672e9d26.tar.gz
gcc-88a56c2eb1cf04cb828c6c19187a8f9b672e9d26.tar.bz2
md.texi (Simple Constraints): Add item about whitespace.
* md.texi (Simple Constraints): Add item about whitespace. * genoutput.c (strip_whitespace): New. (scan_operands) [MATCH_OPERAND, MATCH_SCRATCH]: Call strip_whitespace for constraints. Test pointer using NULL, not 0. Co-Authored-By: Michael Meissner <meissner@cygnus.com> From-SVN: r32008
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/genoutput.c34
-rw-r--r--gcc/md.texi6
3 files changed, 43 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7db972f..9b9dd6e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+Wed Feb 16 15:04:49 2000 Hans-Peter Nilsson <hp@bitrange.com>
+ Michael Meissner <meissner@cygnus.com>
+
+ * md.texi (Simple Constraints): Add item about whitespace.
+ * genoutput.c (strip_whitespace): New.
+ (scan_operands) [MATCH_OPERAND, MATCH_SCRATCH]: Call
+ strip_whitespace for constraints.
+ Test pointer using NULL, not 0.
+
2000-02-16 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* cpplib.c (do_line): Pedwarn for #line > 32767.
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index ecac9c9..022d676 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -104,6 +104,7 @@ struct obstack *rtl_obstack = &obstack;
#define obstack_chunk_free free
static int n_occurrences PARAMS ((int, char *));
+static void strip_whitespace PARAMS ((char *));
/* insns in the machine description are assigned sequential code numbers
that are used by insn-recog.c (produced by genrecog) to communicate
@@ -439,9 +440,12 @@ scan_operands (d, part, this_address_p, this_strict_low)
d->operand[opno].strict_low = this_strict_low;
d->operand[opno].predicate = XSTR (part, 1);
d->operand[opno].constraint = XSTR (part, 2);
- if (XSTR (part, 2) != 0 && *XSTR (part, 2) != 0)
- d->operand[opno].n_alternatives
- = n_occurrences (',', XSTR (part, 2)) + 1;
+ if (XSTR (part, 2) != NULL && *XSTR (part, 2) != 0)
+ {
+ strip_whitespace (XSTR (part, 2));
+ d->operand[opno].n_alternatives
+ = n_occurrences (',', XSTR (part, 2)) + 1;
+ }
d->operand[opno].address_p = this_address_p;
d->operand[opno].eliminable = 1;
return;
@@ -464,9 +468,12 @@ scan_operands (d, part, this_address_p, this_strict_low)
d->operand[opno].strict_low = 0;
d->operand[opno].predicate = "scratch_operand";
d->operand[opno].constraint = XSTR (part, 1);
- if (XSTR (part, 1) != 0 && *XSTR (part, 1) != 0)
- d->operand[opno].n_alternatives
- = n_occurrences (',', XSTR (part, 1)) + 1;
+ if (XSTR (part, 1) != NULL && *XSTR (part, 1) != 0)
+ {
+ strip_whitespace (XSTR (part, 1));
+ d->operand[opno].n_alternatives
+ = n_occurrences (',', XSTR (part, 1)) + 1;
+ }
d->operand[opno].address_p = 0;
d->operand[opno].eliminable = 0;
return;
@@ -969,3 +976,18 @@ n_occurrences (c, s)
n += (*s++ == c);
return n;
}
+
+/* Remove whitespace in `s' by moving up characters until the end. */
+static void
+strip_whitespace (s)
+ char *s;
+{
+ char *p = s;
+ int ch;
+
+ while ((ch = *s++) != '\0')
+ if (! ISSPACE (ch))
+ *p++ = ch;
+
+ *p = '\0';
+}
diff --git a/gcc/md.texi b/gcc/md.texi
index bd706a3..faec112 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -665,6 +665,12 @@ which describes one kind of operand that is permitted. Here are
the letters that are allowed:
@table @asis
+@item whitespace
+Whitespace characters are ignored and can be inserted at any position
+except the first. This enables each alternative for different operands to
+be visually aligned in the machine description even if they have different
+number of constraints and modifiers.
+
@cindex @samp{m} in constraint
@cindex memory references in constraints
@item @samp{m}