diff options
author | Michael Collison <michael.collison@linaro.org> | 2015-09-24 23:26:50 +0000 |
---|---|---|
committer | Michael Collison <collison@gcc.gnu.org> | 2015-09-24 23:26:50 +0000 |
commit | 4fe017f67af0b6ac09c568626227460d7a1209c1 (patch) | |
tree | 9fd539665386badc31bb931283c207d960b3116b /gcc | |
parent | 86f0bef37378a05ef620a6120b95698c3f113db8 (diff) | |
download | gcc-4fe017f67af0b6ac09c568626227460d7a1209c1.zip gcc-4fe017f67af0b6ac09c568626227460d7a1209c1.tar.gz gcc-4fe017f67af0b6ac09c568626227460d7a1209c1.tar.bz2 |
re PR other/57195 (Mode attributes with specific mode iterator can not be used as mode iterators in *.md files)
2015-09-24 Michael Collison <michael.collison@linaro.org>
PR other/57195
* read-md.c (read_name): Allow mode iterators inside angle
brackets in rtl expressions.
From-SVN: r228102
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/read-md.c | 19 |
2 files changed, 21 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e951934..29c4245 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-09-24 Michael Collison <michael.collison@linaro.org> + + PR other/57195 + * read-md.c (read_name): Allow mode iterators inside angle + brackets in rtl expressions. + 2015-09-24 Vladimir Makarov <vmakarov@redhat.com> PR target/61578 diff --git a/gcc/read-md.c b/gcc/read-md.c index 9f158ec..e26e4a6 100644 --- a/gcc/read-md.c +++ b/gcc/read-md.c @@ -399,20 +399,31 @@ read_name (struct md_name *name) { int c; size_t i; + int angle_bracket_depth; c = read_skip_spaces (); i = 0; + angle_bracket_depth = 0; while (1) { + if (c == '<') + angle_bracket_depth++; + + if ((c == '>') && (angle_bracket_depth > 0)) + angle_bracket_depth--; + if (c == ' ' || c == '\n' || c == '\t' || c == '\f' || c == '\r' || c == EOF) break; - if (c == ':' || c == ')' || c == ']' || c == '"' || c == '/' - || c == '(' || c == '[') + if (angle_bracket_depth == 0) { - unread_char (c); - break; + if (c == ':' || c == ')' || c == ']' + || c == '"' || c == '/' || c == '(' || c == '[') + { + unread_char (c); + break; + } } if (i == sizeof (name->buffer) - 1) |