OSDN Git Service

* godump.c (go_define): Treat a single character in single quotes,
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Sep 2011 14:28:13 +0000 (14:28 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Sep 2011 14:28:13 +0000 (14:28 +0000)
or a string, as an operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179118 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/godump.c

index 65f8bce..424404f 100644 (file)
@@ -1,3 +1,8 @@
+2011-09-23  Ian Lance Taylor  <iant@google.com>
+
+       * godump.c (go_define): Treat a single character in single quotes,
+       or a string, as an operand.
+
 2011-09-23  Martin Jambor  <mjambor@suse.cz>
 
        * ipa-prop.h (jump_func_type): Updated comments.
index 3f78eea..11cd329 100644 (file)
@@ -301,11 +301,13 @@ go_define (unsigned int lineno, const char *buffer)
        case '\'':
          {
            char quote;
+           int count;
 
            if (saw_operand)
              goto unknown;
            quote = *p;
            *q++ = *p++;
+           count = 0;
            while (*p != quote)
              {
                int c;
@@ -313,6 +315,8 @@ go_define (unsigned int lineno, const char *buffer)
                if (*p == '\0')
                  goto unknown;
 
+               ++count;
+
                if (*p != '\\')
                  {
                    *q++ = *p++;
@@ -358,7 +362,15 @@ go_define (unsigned int lineno, const char *buffer)
                    goto unknown;
                  }
              }
+
            *q++ = *p++;
+
+           if (quote == '\'' && count != 1)
+             goto unknown;
+
+           saw_operand = true;
+           need_operand = false;
+
            break;
          }