From 9a709fd181db04150e794d23578615aad894df1c Mon Sep 17 00:00:00 2001
From: Chris Lattner <sabre@nondot.org>
Date: Fri, 22 Aug 2003 05:42:10 +0000
Subject: [PATCH] Accept double quoted strings everwhere we accept a %ABC
 variable name.

This introduces one more innoculous shift-reduce conflict, but will REALLY
help the type names generated by the C++ frontend, which wants to use all
kinds of crazy stuff.

llvm-svn: 8050
---
 lib/AsmParser/llvmAsmParser.y | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index a90b5f5edb9..08a855416cf 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -698,8 +698,8 @@ Module *RunVMAsmParser(const std::string &Filename, FILE *F) {
 %token <PrimType> VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG
 %token <PrimType> FLOAT DOUBLE TYPE LABEL
 
-%token <StrVal>     VAR_ID LABELSTR STRINGCONSTANT
-%type  <StrVal>  OptVAR_ID OptAssign FuncName
+%token <StrVal> VAR_ID LABELSTR STRINGCONSTANT
+%type  <StrVal> Name OptName OptAssign
 
 
 %token IMPLEMENTATION ZEROINITIALIZER TRUE FALSE BEGINTOK ENDTOK
@@ -728,7 +728,6 @@ Module *RunVMAsmParser(const std::string &Filename, FILE *F) {
 
 // Handle constant integer size restriction and conversion...
 //
-
 INTVAL : SINTVAL;
 INTVAL : UINTVAL {
   if ($1 > (uint32_t)INT32_MAX)     // Outside of my range!
@@ -762,7 +761,7 @@ IntType  : SIntType | UIntType;
 FPType   : FLOAT | DOUBLE;
 
 // OptAssign - Value producing statements have an optional assignment component
-OptAssign : VAR_ID '=' {
+OptAssign : Name '=' {
     $$ = $1;
   }
   | /*empty*/ { 
@@ -1246,9 +1245,10 @@ TargetDefinition : ENDIAN '=' BigOrLittle {
 //                       Rules to match Function Headers
 //===----------------------------------------------------------------------===//
 
-OptVAR_ID : VAR_ID | /*empty*/ { $$ = 0; };
+Name : VAR_ID | STRINGCONSTANT;
+OptName : Name | /*empty*/ { $$ = 0; };
 
-ArgVal : Types OptVAR_ID {
+ArgVal : Types OptName {
   if (*$1 == Type::VoidTy)
     ThrowException("void typed arguments are invalid!");
   $$ = new std::pair<PATypeHolder*, char*>($1, $2);
@@ -1281,9 +1281,7 @@ ArgList : ArgListH {
     $$ = 0;
   };
 
-FuncName : VAR_ID | STRINGCONSTANT;
-
-FunctionHeaderH : TypesV FuncName '(' ArgList ')' {
+FunctionHeaderH : TypesV Name '(' ArgList ')' {
   UnEscapeLexed($2);
   std::string FunctionName($2);
   
@@ -1409,7 +1407,7 @@ ConstValueRef : ESINT64VAL {    // A reference to a direct constant
 SymbolicValueRef : INTVAL {  // Is it an integer reference...?
     $$ = ValID::create($1);
   }
-  | VAR_ID {                 // Is it a named reference...?
+  | Name {                   // Is it a named reference...?
     $$ = ValID::create($1);
   };