OSDN Git Service

compiler: fix an ICE when parsing 0xdie, reject token 0x123i.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 May 2012 18:53:44 +0000 (18:53 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 May 2012 18:53:44 +0000 (18:53 +0000)
The lexer used to incorrectly accept a token like 0x123i
and interpreted it as 123i. It also used to die when encountering
0xdie.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@187267 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/gofrontend/lex.cc

index 53618fc..5b7ce68 100644 (file)
@@ -1012,7 +1012,9 @@ Lex::gather_number()
            }
        }
 
-      if (*p != '.' && *p != 'i' && !Lex::could_be_exponent(p, pend))
+      // A partial token that looks like an octal literal might actually be the
+      // beginning of a floating-point or imaginary literal.
+      if (base == 16 || (*p != '.' && *p != 'i' && !Lex::could_be_exponent(p, pend)))
        {
          std::string s(pnum, p - pnum);
          mpz_t val;