[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.cpp.cvs Lexer.l.cvs llvmAsmParser.cpp.cvs llvmAsmParser.h.cvs llvmAsmParser.y.cvs

Reid Spencer reid at x10sys.com
Tue May 22 11:53:13 PDT 2007



Changes in directory llvm/lib/AsmParser:

Lexer.cpp.cvs updated: 1.45 -> 1.46
Lexer.l.cvs updated: 1.37 -> 1.38
llvmAsmParser.cpp.cvs updated: 1.99 -> 1.100
llvmAsmParser.h.cvs updated: 1.77 -> 1.78
llvmAsmParser.y.cvs updated: 1.99 -> 1.100
---
Log message:

Regenerate.


---
Diffs of the changes:  (+647 -661)

 Lexer.cpp.cvs         |  393 ++++++++++++++--------------
 Lexer.l.cvs           |   77 ++---
 llvmAsmParser.cpp.cvs |  692 +++++++++++++++++++++++++-------------------------
 llvmAsmParser.h.cvs   |    6 
 llvmAsmParser.y.cvs   |  140 +++++-----
 5 files changed, 647 insertions(+), 661 deletions(-)


Index: llvm/lib/AsmParser/Lexer.cpp.cvs
diff -u llvm/lib/AsmParser/Lexer.cpp.cvs:1.45 llvm/lib/AsmParser/Lexer.cpp.cvs:1.46
--- llvm/lib/AsmParser/Lexer.cpp.cvs:1.45	Tue May 22 01:56:32 2007
+++ llvm/lib/AsmParser/Lexer.cpp.cvs	Tue May 22 13:52:55 2007
@@ -17,10 +17,10 @@
 #define yylineno llvmAsmlineno
 
 #line 20 "Lexer.cpp"
-/* A lexical scanner generated by flex */
+/* A lexical scanner generated by flex*/
 
 /* Scanner skeleton version:
- * $Header: /var/cvs/llvm/llvm/lib/AsmParser/Lexer.cpp.cvs,v 1.45 2007/05/22 06:56:32 lattner Exp $
+ * $Header: /var/cvs/llvm/llvm/lib/AsmParser/Lexer.cpp.cvs,v 1.46 2007/05/22 18:52:55 reid Exp $
  */
 
 #define FLEX_SCANNER
@@ -28,6 +28,7 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
+#include <unistd.h>
 
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
@@ -41,7 +42,6 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
-#include <unistd.h>
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -153,6 +153,15 @@
 
 #define unput(c) yyunput( c, yytext_ptr )
 
+/* Some routines like yy_flex_realloc() are emitted as static but are
+   not called by all lexers. This generates warnings in some compilers,
+   notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
+
 /* The following is because we cannot portably get our hands on size_t
  * (without autoconf's help, which isn't available because we want
  * flex-generated scanners to compile on their own).
@@ -259,7 +268,7 @@
 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
 static void yy_flex_free YY_PROTO(( void * ));
 
 #define yy_new_buffer yy_create_buffer
@@ -881,7 +890,7 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 #define INITIAL 0
 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
 //
@@ -896,7 +905,7 @@
 //
 //===----------------------------------------------------------------------===*/
 #define YY_NEVER_INTERACTIVE 1
-#line 28 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 #include "ParserInternals.h"
 #include "llvm/Module.h"
 #include "llvm/Support/MathExtras.h"
@@ -973,29 +982,20 @@
 
 
 // UnEscapeLexed - Run through the specified buffer and change \xx codes to the
-// appropriate character.  If AllowNull is set to false, a \00 value will cause
-// an exception to be thrown.
-//
-// If AllowNull is set to true, the return value of the function points to the
-// last character of the string in memory.
-//
-char *UnEscapeLexed(char *Buffer, bool AllowNull) {
+// appropriate character.
+char *UnEscapeLexed(char *Buffer) {
   char *BOut = Buffer;
   for (char *BIn = Buffer; *BIn; ) {
     if (BIn[0] == '\\' && isxdigit(BIn[1]) && isxdigit(BIn[2])) {
-      char Tmp = BIn[3]; BIn[3] = 0;     // Terminate string
-      *BOut = (char)strtol(BIn+1, 0, 16);  // Convert to number
-      if (!AllowNull && !*BOut)
-        GenerateError("String literal cannot accept \\00 escape!");
-
-      BIn[3] = Tmp;                  // Restore character
-      BIn += 3;                      // Skip over handled chars
+      char Tmp = BIn[3]; BIn[3] = 0;      // Terminate string
+      *BOut = (char)strtol(BIn+1, 0, 16); // Convert to number
+      BIn[3] = Tmp;                       // Restore character
+      BIn += 3;                           // Skip over handled chars
       ++BOut;
     } else {
       *BOut++ = *BIn++;
     }
   }
-
   return BOut;
 }
 
@@ -1168,10 +1168,10 @@
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
+	register char *yy_cp = NULL, *yy_bp = NULL;
 	register int yy_act;
 
-#line 182 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 173 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 
 
 #line 1178 "Lexer.cpp"
@@ -1267,272 +1267,272 @@
 	{ /* beginning of action switch */
 case 1:
 YY_RULE_SETUP
-#line 184 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 175 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { /* Ignore comments for now */ }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 186 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 177 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return BEGINTOK; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 187 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 178 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ENDTOK; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 188 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 179 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TRUETOK;  }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 189 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 180 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return FALSETOK; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 190 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 181 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DECLARE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 191 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 182 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DEFINE; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 192 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 183 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return GLOBAL; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 193 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 184 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CONSTANT; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 194 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 185 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return INTERNAL; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 195 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 186 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return LINKONCE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 196 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 187 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return WEAK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 197 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 188 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return APPENDING; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 198 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 189 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DLLIMPORT; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 199 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 190 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DLLEXPORT; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 200 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 191 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return HIDDEN; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 201 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 192 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return PROTECTED; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 202 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return EXTERN_WEAK; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 203 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 204 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return THREAD_LOCAL; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 205 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ZEROINITIALIZER; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 206 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DOTDOTDOT; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 207 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UNDEF; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 208 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return NULL_TOK; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 209 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TO; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 210 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TAIL; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 211 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TARGET; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 212 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TRIPLE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 213 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DEPLIBS; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 214 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DATALAYOUT; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 215 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return VOLATILE; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 216 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ALIGN;  }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 217 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SECTION; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 218 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ALIAS; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 219 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return MODULE; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 220 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ASM_TOK; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 221 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SIDEEFFECT; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 223 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CC_TOK; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 224 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CCC_TOK; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 225 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return FASTCC_TOK; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 226 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return COLDCC_TOK; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 227 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return X86_STDCALLCC_TOK; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 228 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return X86_FASTCALLCC_TOK; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 230 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return INREG; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 231 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SRET;  }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 232 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return NOUNWIND; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 233 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return NORETURN; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 235 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TY(Type::VoidTy,  VOID);  }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 236 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 227 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TY(Type::FloatTy, FLOAT); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 237 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TY(Type::DoubleTy,DOUBLE);}
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 238 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TY(Type::LabelTy, LABEL); }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 239 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 230 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TYPE;   }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 240 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OPAQUE; }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 241 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { uint64_t NumBits = atoull(yytext+1);
                   if (NumBits < IntegerType::MIN_INT_BITS || 
                       NumBits > IntegerType::MAX_INT_BITS)
@@ -1543,419 +1543,418 @@
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 249 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Add, ADD); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 250 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Sub, SUB); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 251 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Mul, MUL); }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 252 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, UDiv, UDIV); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 253 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, SDiv, SDIV); }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 254 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 245 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, FDiv, FDIV); }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 255 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 246 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, URem, UREM); }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 256 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 247 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, SRem, SREM); }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 257 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 248 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, FRem, FREM); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 258 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 249 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Shl, SHL); }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 259 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 250 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, LShr, LSHR); }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 260 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 251 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, AShr, ASHR); }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 261 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 252 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, And, AND); }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 262 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Or , OR ); }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 263 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(BinaryOpVal, Xor, XOR); }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 264 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal,  ICmp,  ICMP); }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 265 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal,  FCmp,  FCMP); }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 267 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return EQ;  }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 268 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return NE;  }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 269 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SLT; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 270 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SGT; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 271 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SLE; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 272 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SGE; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 273 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ULT; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 274 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UGT; }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 275 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ULE; }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 276 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UGE; }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 277 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OEQ; }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 278 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 269 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ONE; }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 279 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OLT; }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 280 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OGT; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 281 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OLE; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 282 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return OGE; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 283 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ORD; }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 284 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UNO; }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 285 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UEQ; }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 286 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UNE; }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 288 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 289 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, Call, CALL); }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 290 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, Trunc, TRUNC); }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 291 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, ZExt, ZEXT); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 292 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, SExt, SEXT); }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 293 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 294 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, FPExt, FPEXT); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 295 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, UIToFP, UITOFP); }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 296 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 287 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, SIToFP, SITOFP); }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 297 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, FPToUI, FPTOUI); }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 298 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, FPToSI, FPTOSI); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 299 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 290 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 300 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 301 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(CastOpVal, BitCast, BITCAST); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 302 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, Select, SELECT); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 303 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, VAArg , VAARG); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 304 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Ret, RET); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 305 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Br, BR); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 306 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Switch, SWITCH); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 307 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Invoke, INVOKE); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 308 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 309 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 311 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, Malloc, MALLOC); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 312 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, Alloca, ALLOCA); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 313 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, Free, FREE); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 314 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, Load, LOAD); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 315 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, Store, STORE); }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 316 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 318 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 319 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 320 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 323 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
+                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip %
                   return LOCALVAR;
                 }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 328 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip @
+                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip @
                   return GLOBALVAR;
                 }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 333 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 322 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  yytext[strlen(yytext)-1] = 0;  // nuke colon
-                  UnEscapeLexed(yytext);
-                  llvmAsmlval.StrVal = strdup(yytext);
+                  yytext[yyleng-1] = 0;            // nuke colon
+                  llvmAsmlval.StrVal = new std::string(yytext);
                   return LABELSTR;
                 }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 339 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 327 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  yytext[strlen(yytext)-2] = 0;  // nuke colon, end quote
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);
+                  yytext[yyleng-2] = 0;  // nuke colon, end quote
+                  const char* EndChar = UnEscapeLexed(yytext+1);
+                  llvmAsmlval.StrVal = 
+                    new std::string(yytext+1, EndChar - yytext - 1);
                   return LABELSTR;
                 }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 346 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
-{ // Note that we cannot unescape a string constant here!  The
-                   // string constant might contain a \00 which would not be
-                   // understood by the string stuff.  It is valid to make a
-                   // [sbyte] c"Hello World\00" constant, for example.
-                   //
-                   yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                   llvmAsmlval.StrVal = strdup(yytext+1);  // Nuke start quote
+#line 335 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ yytext[yyleng-1] = 0;           // nuke end quote
+                   const char* EndChar = UnEscapeLexed(yytext+1);
+                   llvmAsmlval.StrVal = 
+                     new std::string(yytext+1, EndChar - yytext - 1);
                    return STRINGCONSTANT;
                  }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 355 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 341 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                     yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                     llvmAsmlval.StrVal = strdup(yytext+2);  // Nuke @, quote
+                     yytext[yyleng-1] = 0;         // nuke end quote
+                     const char* EndChar = UnEscapeLexed(yytext+2);
+                     llvmAsmlval.StrVal = 
+                       new std::string(yytext+2, EndChar - yytext - 2);
                      return ATSTRINGCONSTANT;
                    }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 361 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 348 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                     yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                     llvmAsmlval.StrVal = strdup(yytext+2);  // Nuke %, quote
+                     yytext[yyleng-1] = 0;           // nuke end quote
+                     const char* EndChar = UnEscapeLexed(yytext+2);
+                     llvmAsmlval.StrVal = 
+                       new std::string(yytext+2, EndChar - yytext - 2);
                      return PCTSTRINGCONSTANT;
                    }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 366 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
-{ int len = strlen(yytext); 
-                  uint32_t numBits = ((len * 64) / 19) + 1;
-                  APInt Tmp(numBits, yytext, len, 10);
+#line 355 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ 
+                  uint32_t numBits = ((yyleng * 64) / 19) + 1;
+                  APInt Tmp(numBits, yytext, yyleng, 10);
                   uint32_t activeBits = Tmp.getActiveBits();
                   if (activeBits > 0 && activeBits < numBits)
                     Tmp.trunc(activeBits);
@@ -1970,10 +1969,10 @@
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 380 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
-{ int len = strlen(yytext); 
-                  uint32_t numBits = (((len-1) * 64) / 19) + 2;
-                  APInt Tmp(numBits, yytext, len, 10);
+#line 369 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{
+                  uint32_t numBits = (((yyleng-1) * 64) / 19) + 2;
+                  APInt Tmp(numBits, yytext, yyleng, 10);
                   uint32_t minBits = Tmp.getMinSignedBits();
                   if (minBits > 0 && minBits < numBits)
                     Tmp.trunc(minBits);
@@ -1988,8 +1987,8 @@
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 395 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
-{ int len = strlen(yytext+3) - 3;
+#line 384 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ int len = yyleng - 3;
                    uint32_t bits = len * 4;
                    APInt Tmp(bits, yytext+3, len, 16);
                    uint32_t activeBits = Tmp.getActiveBits();
@@ -2009,7 +2008,7 @@
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 413 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 402 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
@@ -2020,7 +2019,7 @@
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 420 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 409 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
@@ -2031,16 +2030,16 @@
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 428 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 417 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 429 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 418 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 431 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 420 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
                   /* Make sure to free the internal buffers for flex when we are
                    * done reading our input!
@@ -2051,20 +2050,20 @@
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 439 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 428 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { /* Ignore whitespace */ }
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 440 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 429 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return yytext[0]; }
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 442 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 431 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2068 "Lexer.cpp"
+#line 2067 "Lexer.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2440,6 +2439,7 @@
 #endif	/* ifndef YY_NO_UNPUT */
 
 
+#ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput()
 #else
@@ -2513,7 +2513,7 @@
 
 	return c;
 	}
-
+#endif /* YY_NO_INPUT */
 
 #ifdef YY_USE_PROTOS
 void yyrestart( FILE *input_file )
@@ -2624,11 +2624,6 @@
 	}
 
 
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
 
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
@@ -2946,5 +2941,5 @@
 	return 0;
 	}
 #endif
-#line 442 "/Users/sabre/cvs/llvm/lib/AsmParser/Lexer.l"
+#line 431 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 


Index: llvm/lib/AsmParser/Lexer.l.cvs
diff -u llvm/lib/AsmParser/Lexer.l.cvs:1.37 llvm/lib/AsmParser/Lexer.l.cvs:1.38
--- llvm/lib/AsmParser/Lexer.l.cvs:1.37	Tue May 22 01:56:32 2007
+++ llvm/lib/AsmParser/Lexer.l.cvs	Tue May 22 13:52:55 2007
@@ -101,29 +101,20 @@
 
 
 // UnEscapeLexed - Run through the specified buffer and change \xx codes to the
-// appropriate character.  If AllowNull is set to false, a \00 value will cause
-// an exception to be thrown.
-//
-// If AllowNull is set to true, the return value of the function points to the
-// last character of the string in memory.
-//
-char *UnEscapeLexed(char *Buffer, bool AllowNull) {
+// appropriate character.
+char *UnEscapeLexed(char *Buffer) {
   char *BOut = Buffer;
   for (char *BIn = Buffer; *BIn; ) {
     if (BIn[0] == '\\' && isxdigit(BIn[1]) && isxdigit(BIn[2])) {
-      char Tmp = BIn[3]; BIn[3] = 0;     // Terminate string
-      *BOut = (char)strtol(BIn+1, 0, 16);  // Convert to number
-      if (!AllowNull && !*BOut)
-        GenerateError("String literal cannot accept \\00 escape!");
-
-      BIn[3] = Tmp;                  // Restore character
-      BIn += 3;                      // Skip over handled chars
+      char Tmp = BIn[3]; BIn[3] = 0;      // Terminate string
+      *BOut = (char)strtol(BIn+1, 0, 16); // Convert to number
+      BIn[3] = Tmp;                       // Restore character
+      BIn += 3;                           // Skip over handled chars
       ++BOut;
     } else {
       *BOut++ = *BIn++;
     }
   }
-
   return BOut;
 }
 
@@ -321,51 +312,49 @@
 
 
 {LocalVarName}  {
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
+                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip %
                   return LOCALVAR;
                 }
 {GlobalVarName} {
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip @
+                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip @
                   return GLOBALVAR;
                 }
 {Label}         {
-                  yytext[strlen(yytext)-1] = 0;  // nuke colon
-                  UnEscapeLexed(yytext);
-                  llvmAsmlval.StrVal = strdup(yytext);
+                  yytext[yyleng-1] = 0;            // nuke colon
+                  llvmAsmlval.StrVal = new std::string(yytext);
                   return LABELSTR;
                 }
 {QuoteLabel}    {
-                  yytext[strlen(yytext)-2] = 0;  // nuke colon, end quote
-                  UnEscapeLexed(yytext+1);
-                  llvmAsmlval.StrVal = strdup(yytext+1);
+                  yytext[yyleng-2] = 0;  // nuke colon, end quote
+                  const char* EndChar = UnEscapeLexed(yytext+1);
+                  llvmAsmlval.StrVal = 
+                    new std::string(yytext+1, EndChar - yytext - 1);
                   return LABELSTR;
                 }
 
-{StringConstant} { // Note that we cannot unescape a string constant here!  The
-                   // string constant might contain a \00 which would not be
-                   // understood by the string stuff.  It is valid to make a
-                   // [sbyte] c"Hello World\00" constant, for example.
-                   //
-                   yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                   llvmAsmlval.StrVal = strdup(yytext+1);  // Nuke start quote
+{StringConstant} { yytext[yyleng-1] = 0;           // nuke end quote
+                   const char* EndChar = UnEscapeLexed(yytext+1);
+                   llvmAsmlval.StrVal = 
+                     new std::string(yytext+1, EndChar - yytext - 1);
                    return STRINGCONSTANT;
                  }
 {AtStringConstant} {
-                     yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                     llvmAsmlval.StrVal = strdup(yytext+2);  // Nuke @, quote
+                     yytext[yyleng-1] = 0;         // nuke end quote
+                     const char* EndChar = UnEscapeLexed(yytext+2);
+                     llvmAsmlval.StrVal = 
+                       new std::string(yytext+2, EndChar - yytext - 2);
                      return ATSTRINGCONSTANT;
                    }
-
 {PctStringConstant} {
-                     yytext[strlen(yytext)-1] = 0;           // nuke end quote
-                     llvmAsmlval.StrVal = strdup(yytext+2);  // Nuke %, quote
+                     yytext[yyleng-1] = 0;           // nuke end quote
+                     const char* EndChar = UnEscapeLexed(yytext+2);
+                     llvmAsmlval.StrVal = 
+                       new std::string(yytext+2, EndChar - yytext - 2);
                      return PCTSTRINGCONSTANT;
                    }
-{PInteger}      { int len = strlen(yytext); 
-                  uint32_t numBits = ((len * 64) / 19) + 1;
-                  APInt Tmp(numBits, yytext, len, 10);
+{PInteger}      { 
+                  uint32_t numBits = ((yyleng * 64) / 19) + 1;
+                  APInt Tmp(numBits, yytext, yyleng, 10);
                   uint32_t activeBits = Tmp.getActiveBits();
                   if (activeBits > 0 && activeBits < numBits)
                     Tmp.trunc(activeBits);
@@ -377,9 +366,9 @@
                     return EUINT64VAL;
                   }
                 }
-{NInteger}      { int len = strlen(yytext); 
-                  uint32_t numBits = (((len-1) * 64) / 19) + 2;
-                  APInt Tmp(numBits, yytext, len, 10);
+{NInteger}      {
+                  uint32_t numBits = (((yyleng-1) * 64) / 19) + 2;
+                  APInt Tmp(numBits, yytext, yyleng, 10);
                   uint32_t minBits = Tmp.getMinSignedBits();
                   if (minBits > 0 && minBits < numBits)
                     Tmp.trunc(minBits);
@@ -392,7 +381,7 @@
                   }
                 }
 
-{HexIntConstant} { int len = strlen(yytext+3) - 3;
+{HexIntConstant} { int len = yyleng - 3;
                    uint32_t bits = len * 4;
                    APInt Tmp(bits, yytext+3, len, 16);
                    uint32_t activeBits = Tmp.getActiveBits();


Index: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.99 llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.100
--- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.99	Sat May 19 02:22:10 2007
+++ llvm/lib/AsmParser/llvmAsmParser.cpp.cvs	Tue May 22 13:52:55 2007
@@ -342,7 +342,7 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 14 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -614,7 +614,7 @@
       return CurModule.Types[D.Num];
     break;
   case ValID::LocalName:                 // Is it a named definition?
-    if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
+    if (const Type *N = CurModule.CurrentModule->getTypeByName(D.getName())) {
       D.destroy();  // Free old strdup'd memory...
       return N;
     }
@@ -692,7 +692,7 @@
     if (!inFunctionScope()) 
       return 0;
     ValueSymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable();
-    Value *N = SymTab.lookup(D.Name);
+    Value *N = SymTab.lookup(D.getName());
     if (N == 0) 
       return 0;
     if (N->getType() != Ty)
@@ -703,7 +703,7 @@
   }
   case ValID::GlobalName: {                // Is it a named definition?
     ValueSymbolTable &SymTab = CurModule.CurrentModule->getValueSymbolTable();
-    Value *N = SymTab.lookup(D.Name);
+    Value *N = SymTab.lookup(D.getName());
     if (N == 0) 
       return 0;
     if (N->getType() != Ty)
@@ -882,7 +882,7 @@
   
   // We haven't seen this BB before and its first mention is a definition. 
   // Just create it and return it.
-  std::string Name (ID.Type == ValID::LocalName ? ID.Name : "");
+  std::string Name (ID.Type == ValID::LocalName ? ID.getName() : "");
   BB = new BasicBlock(Name, CurFun.CurrentFunction);
   if (ID.Type == ValID::LocalID) {
     assert(ID.Num == CurFun.NextValNum && "Invalid new block number");
@@ -904,7 +904,7 @@
   if (BBI != CurFun.BBForwardRefs.end()) {
     BB = BBI->second;
   } if (ID.Type == ValID::LocalName) {
-    std::string Name = ID.Name;
+    std::string Name = ID.getName();
     Value *N = CurFun.CurrentFunction->getValueSymbolTable().lookup(Name);
     if (N)
       if (N->getType()->getTypeID() == Type::LabelTyID)
@@ -935,7 +935,7 @@
   // Otherwise, this block has not been seen before, create it.
   std::string Name;
   if (ID.Type == ValID::LocalName)
-    Name = ID.Name;
+    Name = ID.getName();
   BB = new BasicBlock(Name, CurFun.CurrentFunction);
 
   // Insert it in the forward refs map.
@@ -1007,10 +1007,12 @@
 // name is not null) things referencing Name can be resolved.  Otherwise, things
 // refering to the number can be resolved.  Do this now.
 //
-static void ResolveTypeTo(char *Name, const Type *ToTy) {
+static void ResolveTypeTo(std::string *Name, const Type *ToTy) {
   ValID D;
-  if (Name) D = ValID::createLocalName(Name);
-  else      D = ValID::createLocalID(CurModule.Types.size());
+  if (Name)
+    D = ValID::createLocalName(*Name);
+  else      
+    D = ValID::createLocalID(CurModule.Types.size());
 
   std::map<ValID, PATypeHolder>::iterator I =
     CurModule.LateResolveTypes.find(D);
@@ -1024,10 +1026,10 @@
 // null potentially, in which case this is a noop.  The string passed in is
 // assumed to be a malloc'd string buffer, and is free'd by this function.
 //
-static void setValueName(Value *V, char *NameStr) {
+static void setValueName(Value *V, std::string *NameStr) {
   if (!NameStr) return;
-  std::string Name(NameStr);      // Copy string
-  free(NameStr);                  // Free old string
+  std::string Name(*NameStr);      // Copy string
+  delete NameStr;                  // Free old string
 
   if (V->getType() == Type::VoidTy) {
     GenerateError("Can't assign name '" + Name+"' to value with void type");
@@ -1049,7 +1051,7 @@
 /// ParseGlobalVariable - Handle parsing of a global.  If Initializer is null,
 /// this is a declaration, otherwise it is a definition.
 static GlobalVariable *
-ParseGlobalVariable(char *NameStr,
+ParseGlobalVariable(std::string *NameStr,
                     GlobalValue::LinkageTypes Linkage,
                     GlobalValue::VisibilityTypes Visibility,
                     bool isConstantGlobal, const Type *Ty,
@@ -1063,15 +1065,15 @@
 
   std::string Name;
   if (NameStr) {
-    Name = NameStr;      // Copy string
-    free(NameStr);       // Free old string
+    Name = *NameStr;      // Copy string
+    delete NameStr;       // Free old string
   }
 
   // See if this global value was forward referenced.  If so, recycle the
   // object.
   ValID ID;
   if (!Name.empty()) {
-    ID = ValID::createGlobalName((char*)Name.c_str());
+    ID = ValID::createGlobalName(Name);
   } else {
     ID = ValID::createGlobalID(CurModule.Values.size());
   }
@@ -1124,12 +1126,12 @@
 // This function returns true if the type has already been defined, but is
 // allowed to be redefined in the specified context.  If the name is a new name
 // for the type plane, it is inserted and false is returned.
-static bool setTypeName(const Type *T, char *NameStr) {
+static bool setTypeName(const Type *T, std::string *NameStr) {
   assert(!inFunctionScope() && "Can't give types function-local names!");
   if (NameStr == 0) return false;
  
-  std::string Name(NameStr);      // Copy string
-  free(NameStr);                  // Free old string
+  std::string Name(*NameStr);      // Copy string
+  delete NameStr;                  // Free old string
 
   // We don't allow assigning names to void type
   if (T == Type::VoidTy) {
@@ -1303,7 +1305,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 955 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 957 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -1339,8 +1341,8 @@
   double                            FPVal;
   bool                              BoolVal;
 
-  char                             *StrVal;   // This memory is strdup'd!
-  llvm::ValID                       ValIDVal; // strdup'd memory maybe!
+  std::string                      *StrVal;   // This memory must be deleted
+  llvm::ValID                       ValIDVal;
 
   llvm::Instruction::BinaryOps      BinaryOpVal;
   llvm::Instruction::TermOps        TermOpVal;
@@ -1351,7 +1353,7 @@
   llvm::FCmpInst::Predicate         FPredicate;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 1355 "llvmAsmParser.tab.c"
+#line 1357 "llvmAsmParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -1363,7 +1365,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 1367 "llvmAsmParser.tab.c"
+#line 1369 "llvmAsmParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1717,36 +1719,36 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1112,
-    1112,  1113,  1113,  1113,  1113,  1113,  1113,  1114,  1114,  1114,
-    1114,  1114,  1114,  1115,  1115,  1115,  1115,  1115,  1115,  1118,
-    1118,  1119,  1119,  1120,  1120,  1121,  1121,  1122,  1122,  1126,
-    1126,  1127,  1127,  1128,  1128,  1129,  1129,  1130,  1130,  1131,
-    1131,  1132,  1132,  1133,  1134,  1139,  1140,  1140,  1142,  1142,
-    1142,  1143,  1143,  1147,  1151,  1156,  1156,  1158,  1159,  1164,
-    1170,  1171,  1172,  1173,  1174,  1178,  1179,  1180,  1184,  1185,
-    1186,  1187,  1191,  1192,  1193,  1197,  1198,  1199,  1200,  1201,
-    1205,  1206,  1207,  1210,  1211,  1212,  1213,  1214,  1215,  1216,
-    1223,  1224,  1225,  1226,  1229,  1230,  1235,  1236,  1237,  1240,
-    1241,  1248,  1249,  1255,  1256,  1264,  1272,  1273,  1278,  1279,
-    1280,  1285,  1298,  1298,  1298,  1298,  1301,  1305,  1309,  1316,
-    1321,  1329,  1359,  1390,  1395,  1407,  1417,  1421,  1431,  1438,
-    1445,  1452,  1457,  1462,  1469,  1470,  1477,  1484,  1492,  1498,
-    1510,  1538,  1554,  1583,  1611,  1637,  1657,  1683,  1703,  1715,
-    1722,  1788,  1798,  1808,  1814,  1824,  1830,  1840,  1845,  1850,
-    1858,  1870,  1892,  1900,  1906,  1917,  1922,  1927,  1933,  1939,
-    1948,  1952,  1960,  1960,  1963,  1963,  1966,  1977,  1998,  2003,
-    2011,  2012,  2016,  2016,  2020,  2020,  2023,  2026,  2050,  2061,
-    2061,  2072,  2071,  2081,  2080,  2091,  2106,  2109,  2115,  2128,
-    2132,  2137,  2139,  2144,  2149,  2158,  2168,  2179,  2183,  2192,
-    2201,  2206,  2328,  2328,  2330,  2339,  2339,  2341,  2346,  2358,
-    2362,  2367,  2371,  2375,  2379,  2383,  2387,  2391,  2395,  2399,
-    2424,  2428,  2442,  2446,  2450,  2454,  2460,  2460,  2466,  2475,
-    2479,  2488,  2497,  2506,  2510,  2515,  2519,  2523,  2528,  2538,
-    2557,  2566,  2646,  2650,  2657,  2668,  2681,  2691,  2702,  2712,
-    2721,  2730,  2733,  2734,  2741,  2745,  2750,  2771,  2788,  2802,
-    2816,  2828,  2836,  2843,  2849,  2855,  2861,  2876,  2961,  2966,
-    2970,  2977,  2984,  2992,  2999,  3007,  3015,  3029,  3046
+       0,  1116,  1116,  1116,  1116,  1116,  1116,  1116,  1116,  1116,
+    1116,  1117,  1117,  1117,  1117,  1117,  1117,  1118,  1118,  1118,
+    1118,  1118,  1118,  1119,  1119,  1119,  1119,  1119,  1119,  1122,
+    1122,  1123,  1123,  1124,  1124,  1125,  1125,  1126,  1126,  1130,
+    1130,  1131,  1131,  1132,  1132,  1133,  1133,  1134,  1134,  1135,
+    1135,  1136,  1136,  1137,  1138,  1143,  1144,  1144,  1146,  1146,
+    1146,  1147,  1147,  1151,  1155,  1160,  1160,  1162,  1163,  1168,
+    1174,  1175,  1176,  1177,  1178,  1182,  1183,  1184,  1188,  1189,
+    1190,  1191,  1195,  1196,  1197,  1201,  1202,  1203,  1204,  1205,
+    1209,  1210,  1211,  1214,  1215,  1216,  1217,  1218,  1219,  1220,
+    1227,  1228,  1229,  1230,  1233,  1234,  1239,  1240,  1241,  1244,
+    1245,  1252,  1253,  1259,  1260,  1268,  1276,  1277,  1282,  1283,
+    1284,  1289,  1302,  1302,  1302,  1302,  1305,  1309,  1313,  1320,
+    1325,  1333,  1363,  1394,  1399,  1411,  1421,  1425,  1435,  1442,
+    1449,  1456,  1461,  1466,  1473,  1474,  1481,  1488,  1496,  1502,
+    1514,  1542,  1558,  1585,  1613,  1639,  1659,  1685,  1705,  1717,
+    1724,  1790,  1800,  1810,  1816,  1826,  1832,  1842,  1847,  1852,
+    1860,  1872,  1894,  1902,  1908,  1919,  1924,  1929,  1935,  1941,
+    1950,  1954,  1962,  1962,  1965,  1965,  1968,  1979,  2000,  2005,
+    2013,  2014,  2018,  2018,  2022,  2022,  2025,  2028,  2052,  2063,
+    2063,  2074,  2073,  2083,  2082,  2093,  2112,  2115,  2121,  2131,
+    2135,  2140,  2142,  2147,  2152,  2161,  2171,  2182,  2186,  2195,
+    2204,  2209,  2330,  2330,  2332,  2341,  2341,  2343,  2348,  2360,
+    2364,  2369,  2373,  2377,  2381,  2385,  2389,  2393,  2397,  2401,
+    2426,  2430,  2440,  2444,  2448,  2453,  2460,  2460,  2466,  2475,
+    2479,  2488,  2497,  2506,  2510,  2517,  2521,  2525,  2530,  2540,
+    2559,  2568,  2648,  2652,  2659,  2670,  2683,  2693,  2704,  2714,
+    2723,  2732,  2735,  2736,  2743,  2747,  2752,  2773,  2790,  2804,
+    2818,  2830,  2838,  2845,  2851,  2857,  2863,  2878,  2963,  2968,
+    2972,  2979,  2986,  2994,  3001,  3009,  3017,  3031,  3048
 };
 #endif
 
@@ -3122,142 +3124,142 @@
   switch (yyn)
     {
         case 29:
-#line 1118 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
     break;
 
   case 30:
-#line 1118 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 31:
-#line 1119 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1123 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 32:
-#line 1119 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1123 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 33:
-#line 1120 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1124 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 34:
-#line 1120 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1124 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 35:
-#line 1121 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1125 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 36:
-#line 1121 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1125 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 37:
-#line 1122 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 38:
-#line 1122 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 39:
-#line 1126 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 40:
-#line 1126 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 41:
-#line 1127 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 42:
-#line 1127 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 43:
-#line 1128 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1132 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 44:
-#line 1128 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1132 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 45:
-#line 1129 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1133 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 46:
-#line 1129 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1133 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 47:
-#line 1130 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 48:
-#line 1130 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 49:
-#line 1131 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 50:
-#line 1131 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 51:
-#line 1132 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1136 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 52:
-#line 1132 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1136 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 53:
-#line 1133 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1137 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 54:
-#line 1134 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1138 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 62:
-#line 1143 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1147 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 63:
-#line 1147 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[-1].StrVal);
     CHECK_FOR_ERROR
@@ -3265,7 +3267,7 @@
     break;
 
   case 64:
-#line 1151 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1155 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3273,7 +3275,7 @@
     break;
 
   case 68:
-#line 1159 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1163 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3281,7 +3283,7 @@
     break;
 
   case 69:
-#line 1164 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1168 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[-1].StrVal);
     CHECK_FOR_ERROR
@@ -3289,152 +3291,152 @@
     break;
 
   case 70:
-#line 1170 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1174 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 71:
-#line 1171 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1175 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 72:
-#line 1172 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1176 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 73:
-#line 1173 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1177 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 74:
-#line 1174 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1178 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 75:
-#line 1178 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 76:
-#line 1179 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1183 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 77:
-#line 1180 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1184 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 78:
-#line 1184 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1188 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 79:
-#line 1185 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1189 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 80:
-#line 1186 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1190 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;}
     break;
 
   case 81:
-#line 1187 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1191 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
     break;
 
   case 82:
-#line 1191 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1195 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 83:
-#line 1192 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1196 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 84:
-#line 1193 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1197 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 85:
-#line 1197 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1201 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 86:
-#line 1198 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1202 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 87:
-#line 1199 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1203 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 88:
-#line 1200 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1204 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 89:
-#line 1201 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1205 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 90:
-#line 1205 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 91:
-#line 1206 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1210 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 92:
-#line 1207 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1211 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 93:
-#line 1210 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1214 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 94:
-#line 1211 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1215 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 95:
-#line 1212 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1216 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 96:
-#line 1213 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1217 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 97:
-#line 1214 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1218 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 98:
-#line 1215 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
     break;
 
   case 99:
-#line 1216 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1220 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
                    if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
                      GEN_ERROR("Calling conv too large");
@@ -3444,66 +3446,66 @@
     break;
 
   case 100:
-#line 1223 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1227 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
     break;
 
   case 101:
-#line 1224 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1228 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
     break;
 
   case 102:
-#line 1225 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1229 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::InReg;     ;}
     break;
 
   case 103:
-#line 1226 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1230 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::StructRet; ;}
     break;
 
   case 104:
-#line 1229 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1233 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 105:
-#line 1230 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1234 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs);
               ;}
     break;
 
   case 106:
-#line 1235 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1239 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;}
     break;
 
   case 107:
-#line 1236 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1240 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;}
     break;
 
   case 109:
-#line 1240 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1244 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 110:
-#line 1241 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1245 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs);
               ;}
     break;
 
   case 111:
-#line 1248 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1252 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 112:
-#line 1249 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1253 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[0].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3513,12 +3515,12 @@
     break;
 
   case 113:
-#line 1255 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1259 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 114:
-#line 1256 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1260 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[0].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3528,10 +3530,10 @@
     break;
 
   case 115:
-#line 1264 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1268 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
-    if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
+  for (unsigned i = 0, e = (yyvsp[0].StrVal)->length(); i != e; ++i)
+    if ((*(yyvsp[0].StrVal))[i] == '"' || (*(yyvsp[0].StrVal))[i] == '\\')
       GEN_ERROR("Invalid character in section name");
   (yyval.StrVal) = (yyvsp[0].StrVal);
   CHECK_FOR_ERROR
@@ -3539,36 +3541,36 @@
     break;
 
   case 116:
-#line 1272 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1276 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 117:
-#line 1273 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1277 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = (yyvsp[0].StrVal); ;}
     break;
 
   case 118:
-#line 1278 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1282 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 119:
-#line 1279 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1283 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 120:
-#line 1280 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1284 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV->setSection((yyvsp[0].StrVal));
-    free((yyvsp[0].StrVal));
+    CurGV->setSection(*(yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 121:
-#line 1285 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1289 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two");
@@ -3578,7 +3580,7 @@
     break;
 
   case 126:
-#line 1301 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1305 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
@@ -3586,7 +3588,7 @@
     break;
 
   case 127:
-#line 1305 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1309 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
     CHECK_FOR_ERROR
@@ -3594,7 +3596,7 @@
     break;
 
   case 128:
-#line 1309 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1313 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                             // Pointer type?
     if (*(yyvsp[-1].TypeVal) == Type::LabelTy)
       GEN_ERROR("Cannot form a pointer to a basic block");
@@ -3605,7 +3607,7 @@
     break;
 
   case 129:
-#line 1316 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1320 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {            // Named types are also simple types...
     const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
@@ -3614,7 +3616,7 @@
     break;
 
   case 130:
-#line 1321 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1325 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Type UpReference
     if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
@@ -3626,7 +3628,7 @@
     break;
 
   case 131:
-#line 1329 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1333 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Params;
     ParamAttrsVector Attrs;
@@ -3660,7 +3662,7 @@
     break;
 
   case 132:
-#line 1359 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1363 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Params;
     ParamAttrsVector Attrs;
@@ -3694,7 +3696,7 @@
     break;
 
   case 133:
-#line 1390 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1394 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {          // Sized array type?
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
     delete (yyvsp[-1].TypeVal);
@@ -3703,7 +3705,7 @@
     break;
 
   case 134:
-#line 1395 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1399 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {          // Vector type?
      const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
      if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
@@ -3719,7 +3721,7 @@
     break;
 
   case 135:
-#line 1407 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1411 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
@@ -3733,7 +3735,7 @@
     break;
 
   case 136:
-#line 1417 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1421 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                                  // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
@@ -3741,7 +3743,7 @@
     break;
 
   case 137:
-#line 1421 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1425 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(),
@@ -3755,7 +3757,7 @@
     break;
 
   case 138:
-#line 1431 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1435 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                         // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
@@ -3763,7 +3765,7 @@
     break;
 
   case 139:
-#line 1438 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1442 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { 
     (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); 
     (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); 
@@ -3771,7 +3773,7 @@
     break;
 
   case 140:
-#line 1445 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1449 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -3782,14 +3784,14 @@
     break;
 
   case 141:
-#line 1452 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1456 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
   ;}
     break;
 
   case 142:
-#line 1457 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1461 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs));
@@ -3798,7 +3800,7 @@
     break;
 
   case 143:
-#line 1462 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1466 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs));
     CHECK_FOR_ERROR
@@ -3806,7 +3808,7 @@
     break;
 
   case 145:
-#line 1470 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1474 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -3817,7 +3819,7 @@
     break;
 
   case 146:
-#line 1477 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1481 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -3828,7 +3830,7 @@
     break;
 
   case 147:
-#line 1484 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1488 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
@@ -3836,7 +3838,7 @@
     break;
 
   case 148:
-#line 1492 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1496 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeList) = new std::list<PATypeHolder>();
     (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); 
@@ -3846,7 +3848,7 @@
     break;
 
   case 149:
-#line 1498 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1502 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); 
     delete (yyvsp[0].TypeVal);
@@ -3855,7 +3857,7 @@
     break;
 
   case 150:
-#line 1510 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1514 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -3887,7 +3889,7 @@
     break;
 
   case 151:
-#line 1538 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1542 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -3907,7 +3909,7 @@
     break;
 
   case 152:
-#line 1554 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1558 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -3918,21 +3920,19 @@
 
     int NumElements = ATy->getNumElements();
     const Type *ETy = ATy->getElementType();
-    char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
-    if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal)))
+    if (NumElements != -1 && NumElements != int((yyvsp[0].StrVal)->length()))
       GEN_ERROR("Can't build string constant of size " + 
-                     itostr((int)(EndStr-(yyvsp[0].StrVal))) +
+                     itostr((int)((yyvsp[0].StrVal)->length())) +
                      " when array has size " + itostr(NumElements) + "");
     std::vector<Constant*> Vals;
     if (ETy == Type::Int8Ty) {
-      for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal); 
-        C != (unsigned char*)EndStr; ++C)
-      Vals.push_back(ConstantInt::get(ETy, *C));
+      for (unsigned i = 0; i < (yyvsp[0].StrVal)->length(); ++i)
+        Vals.push_back(ConstantInt::get(ETy, (*(yyvsp[0].StrVal))[i]));
     } else {
-      free((yyvsp[0].StrVal));
+      delete (yyvsp[0].StrVal);
       GEN_ERROR("Cannot build string arrays of non byte sized elements");
     }
-    free((yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
     (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
     delete (yyvsp[-2].TypeVal);
     CHECK_FOR_ERROR
@@ -3940,7 +3940,7 @@
     break;
 
   case 153:
-#line 1583 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1585 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -3972,7 +3972,7 @@
     break;
 
   case 154:
-#line 1611 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1613 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
     if (STy == 0)
@@ -4002,7 +4002,7 @@
     break;
 
   case 155:
-#line 1637 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1639 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -4026,7 +4026,7 @@
     break;
 
   case 156:
-#line 1657 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1659 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get());
     if (STy == 0)
@@ -4056,7 +4056,7 @@
     break;
 
   case 157:
-#line 1683 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1685 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -4080,7 +4080,7 @@
     break;
 
   case 158:
-#line 1703 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1705 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4096,7 +4096,7 @@
     break;
 
   case 159:
-#line 1715 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1717 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4107,7 +4107,7 @@
     break;
 
   case 160:
-#line 1722 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1724 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4148,7 +4148,7 @@
       } else {
         std::string Name;
         if ((yyvsp[0].ValIDVal).Type == ValID::GlobalName)
-          Name = (yyvsp[0].ValIDVal).Name;
+          Name = (yyvsp[0].ValIDVal).getName();
         else if ((yyvsp[0].ValIDVal).Type != ValID::GlobalID)
           GEN_ERROR("Invalid reference to global");
 
@@ -4177,7 +4177,7 @@
     break;
 
   case 161:
-#line 1788 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1790 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4191,7 +4191,7 @@
     break;
 
   case 162:
-#line 1798 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1800 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4205,7 +4205,7 @@
     break;
 
   case 163:
-#line 1808 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1810 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4215,7 +4215,7 @@
     break;
 
   case 164:
-#line 1814 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1816 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth();
     if ((yyvsp[0].APIntVal)->getBitWidth() > BitWidth) {
@@ -4229,7 +4229,7 @@
     break;
 
   case 165:
-#line 1824 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1826 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4239,7 +4239,7 @@
     break;
 
   case 166:
-#line 1830 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1832 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth();
     if ((yyvsp[0].APIntVal)->getBitWidth() > BitWidth) {
@@ -4253,7 +4253,7 @@
     break;
 
   case 167:
-#line 1840 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1842 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                      // Boolean constants
     assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getTrue();
@@ -4262,7 +4262,7 @@
     break;
 
   case 168:
-#line 1845 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1847 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                     // Boolean constants
     assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getFalse();
@@ -4271,7 +4271,7 @@
     break;
 
   case 169:
-#line 1850 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1852 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Float & Double constants
     if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
       GEN_ERROR("Floating point constant invalid for type");
@@ -4281,7 +4281,7 @@
     break;
 
   case 170:
-#line 1858 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1860 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4297,7 +4297,7 @@
     break;
 
   case 171:
-#line 1870 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1872 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand");
@@ -4323,7 +4323,7 @@
     break;
 
   case 172:
-#line 1892 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1894 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty)
       GEN_ERROR("Select condition must be of boolean type");
@@ -4335,7 +4335,7 @@
     break;
 
   case 173:
-#line 1900 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1902 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("Binary operator types must match");
@@ -4345,7 +4345,7 @@
     break;
 
   case 174:
-#line 1906 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1908 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match");
@@ -4360,7 +4360,7 @@
     break;
 
   case 175:
-#line 1917 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1919 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match");
@@ -4369,7 +4369,7 @@
     break;
 
   case 176:
-#line 1922 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1924 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("fcmp operand types must match");
@@ -4378,7 +4378,7 @@
     break;
 
   case 177:
-#line 1927 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1929 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -4388,7 +4388,7 @@
     break;
 
   case 178:
-#line 1933 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1935 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -4398,7 +4398,7 @@
     break;
 
   case 179:
-#line 1939 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1941 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -4408,7 +4408,7 @@
     break;
 
   case 180:
-#line 1948 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1950 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
@@ -4416,7 +4416,7 @@
     break;
 
   case 181:
-#line 1952 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1954 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstVector) = new std::vector<Constant*>();
     (yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
@@ -4425,27 +4425,27 @@
     break;
 
   case 182:
-#line 1960 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1962 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 183:
-#line 1960 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1962 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 184:
-#line 1963 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1965 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 185:
-#line 1963 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1965 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 186:
-#line 1966 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1968 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     const Type* VTy = (yyvsp[-1].TypeVal)->get();
     Value *V = getVal(VTy, (yyvsp[0].ValIDVal));
@@ -4460,7 +4460,7 @@
     break;
 
   case 187:
-#line 1977 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 1979 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     Constant *Val = (yyvsp[-3].ConstVal);
     const Type *DestTy = (yyvsp[-1].TypeVal)->get();
@@ -4476,7 +4476,7 @@
     break;
 
   case 188:
-#line 1998 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2000 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4485,7 +4485,7 @@
     break;
 
   case 189:
-#line 2003 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2005 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4494,12 +4494,12 @@
     break;
 
   case 192:
-#line 2016 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2018 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = false; ;}
     break;
 
   case 193:
-#line 2016 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2018 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
@@ -4507,26 +4507,26 @@
     break;
 
   case 194:
-#line 2020 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2022 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = true; ;}
     break;
 
   case 195:
-#line 2020 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2022 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 196:
-#line 2023 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2025 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 197:
-#line 2026 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2028 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -4554,7 +4554,7 @@
     break;
 
   case 198:
-#line 2050 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType));
 
@@ -4569,7 +4569,7 @@
     break;
 
   case 199:
-#line 2061 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2063 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { 
     /* "Externally Visible" Linkage */
     if ((yyvsp[0].ConstVal) == 0) 
@@ -4581,14 +4581,14 @@
     break;
 
   case 200:
-#line 2068 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2070 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 201:
-#line 2072 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2074 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[0].ConstVal) == 0) 
       GEN_ERROR("Global value initializer is not a constant");
@@ -4598,14 +4598,14 @@
     break;
 
   case 202:
-#line 2077 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2079 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 203:
-#line 2081 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2083 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -4616,7 +4616,7 @@
     break;
 
   case 204:
-#line 2087 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2089 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
     CHECK_FOR_ERROR
@@ -4624,15 +4624,19 @@
     break;
 
   case 205:
-#line 2091 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2093 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    std::string Name((yyvsp[-4].StrVal));
+    std::string Name;
+    if ((yyvsp[-4].StrVal)) {
+      Name = *(yyvsp[-4].StrVal);
+      delete (yyvsp[-4].StrVal);
+    }
     if (Name.empty())
       GEN_ERROR("Alias name cannot be empty");
     
     Constant* Aliasee = (yyvsp[0].ConstVal);
     if (Aliasee == 0)
-      GEN_ERROR(std::string("Invalid aliasee for alias: ") + (yyvsp[-4].StrVal));
+      GEN_ERROR(std::string("Invalid aliasee for alias: ") + Name);
 
     GlobalAlias* GA = new GlobalAlias(Aliasee->getType(), (yyvsp[-1].Linkage), Name, Aliasee,
                                       CurModule.CurrentModule);
@@ -4643,78 +4647,75 @@
     break;
 
   case 206:
-#line 2106 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2112 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { 
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 207:
-#line 2109 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2115 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 208:
-#line 2115 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2121 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
-  char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
-  std::string NewAsm((yyvsp[0].StrVal), EndStr);
-  free((yyvsp[0].StrVal));
-
   if (AsmSoFar.empty())
-    CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
+    CurModule.CurrentModule->setModuleInlineAsm(*(yyvsp[0].StrVal));
   else
-    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+NewAsm);
+    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+*(yyvsp[0].StrVal));
+  delete (yyvsp[0].StrVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
   case 209:
-#line 2128 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2131 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
-    free((yyvsp[0].StrVal));
+    CurModule.CurrentModule->setTargetTriple(*(yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
   ;}
     break;
 
   case 210:
-#line 2132 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
-    free((yyvsp[0].StrVal));
+    CurModule.CurrentModule->setDataLayout(*(yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
   ;}
     break;
 
   case 212:
-#line 2139 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2142 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
-          free((yyvsp[0].StrVal));
+          CurModule.CurrentModule->addLibrary(*(yyvsp[0].StrVal));
+          delete (yyvsp[0].StrVal);
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 213:
-#line 2144 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2147 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
-          free((yyvsp[0].StrVal));
+          CurModule.CurrentModule->addLibrary(*(yyvsp[0].StrVal));
+          delete (yyvsp[0].StrVal);
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 214:
-#line 2149 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2152 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 215:
-#line 2158 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2161 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -4728,7 +4729,7 @@
     break;
 
   case 216:
-#line 2168 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2171 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -4742,7 +4743,7 @@
     break;
 
   case 217:
-#line 2179 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[0].ArgList);
     CHECK_FOR_ERROR
@@ -4750,7 +4751,7 @@
     break;
 
   case 218:
-#line 2183 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2186 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[-2].ArgList);
     struct ArgListEntry E;
@@ -4763,7 +4764,7 @@
     break;
 
   case 219:
-#line 2192 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2195 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = new ArgListType;
     struct ArgListEntry E;
@@ -4776,7 +4777,7 @@
     break;
 
   case 220:
-#line 2201 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2204 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
@@ -4784,11 +4785,10 @@
     break;
 
   case 221:
-#line 2207 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2210 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  UnEscapeLexed((yyvsp[-6].StrVal));
-  std::string FunctionName((yyvsp[-6].StrVal));
-  free((yyvsp[-6].StrVal));  // Free strdup'd memory!
+  std::string FunctionName(*(yyvsp[-6].StrVal));
+  delete (yyvsp[-6].StrVal);  // Free strdup'd memory!
   
   // Check the function result for abstractness if this is a define. We should
   // have no abstract types at this point
@@ -4877,8 +4877,8 @@
   Fn->setCallingConv((yyvsp[-8].UIntVal));
   Fn->setAlignment((yyvsp[0].UIntVal));
   if ((yyvsp[-1].StrVal)) {
-    Fn->setSection((yyvsp[-1].StrVal));
-    free((yyvsp[-1].StrVal));
+    Fn->setSection(*(yyvsp[-1].StrVal));
+    delete (yyvsp[-1].StrVal);
   }
 
   // Add all of the arguments we parsed to the function...
@@ -4895,7 +4895,7 @@
     for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); 
          I != (yyvsp[-4].ArgList)->end() && ArgIt != ArgEnd; ++I, ++ArgIt) {
       delete I->Ty;                          // Delete the typeholder...
-      setValueName(ArgIt, I->Name);          // Insert arg into symtab...
+      setValueName(ArgIt, I->Name);       // Insert arg into symtab...
       CHECK_FOR_ERROR
       InsertValue(ArgIt);
       Idx++;
@@ -4908,7 +4908,7 @@
     break;
 
   case 224:
-#line 2330 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2332 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = CurFun.CurrentFunction;
 
@@ -4920,7 +4920,7 @@
     break;
 
   case 227:
-#line 2341 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2343 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
   CHECK_FOR_ERROR
@@ -4928,7 +4928,7 @@
     break;
 
   case 228:
-#line 2346 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2348 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.CurrentFunction->setLinkage((yyvsp[-2].Linkage));
     CurFun.CurrentFunction->setVisibility((yyvsp[-1].Visibility));
@@ -4939,7 +4939,7 @@
     break;
 
   case 229:
-#line 2358 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2360 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -4947,7 +4947,7 @@
     break;
 
   case 230:
-#line 2362 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2364 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -4955,7 +4955,7 @@
     break;
 
   case 231:
-#line 2367 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2369 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {    // A reference to a direct constant
     (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
     CHECK_FOR_ERROR
@@ -4963,7 +4963,7 @@
     break;
 
   case 232:
-#line 2371 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2373 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
@@ -4971,7 +4971,7 @@
     break;
 
   case 233:
-#line 2375 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2377 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                     // Perhaps it's an FP constant?
     (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
     CHECK_FOR_ERROR
@@ -4979,7 +4979,7 @@
     break;
 
   case 234:
-#line 2379 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2381 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
@@ -4987,7 +4987,7 @@
     break;
 
   case 235:
-#line 2383 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2385 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
@@ -4995,7 +4995,7 @@
     break;
 
   case 236:
-#line 2387 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2389 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
@@ -5003,7 +5003,7 @@
     break;
 
   case 237:
-#line 2391 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2393 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
@@ -5011,7 +5011,7 @@
     break;
 
   case 238:
-#line 2395 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2397 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {     // A vector zero constant.
     (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
@@ -5019,7 +5019,7 @@
     break;
 
   case 239:
-#line 2399 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2401 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
     const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
     int NumElements = (yyvsp[-1].ConstVector)->size(); 
@@ -5048,7 +5048,7 @@
     break;
 
   case 240:
-#line 2424 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2426 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
@@ -5056,21 +5056,17 @@
     break;
 
   case 241:
-#line 2428 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2430 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
-    std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
-    End = UnEscapeLexed((yyvsp[0].StrVal), true);
-    std::string Constraints = std::string((yyvsp[0].StrVal), End);
-    (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal));
-    free((yyvsp[-2].StrVal));
-    free((yyvsp[0].StrVal));
+    (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[-2].StrVal), *(yyvsp[0].StrVal), (yyvsp[-3].BoolVal));
+    delete (yyvsp[-2].StrVal);
+    delete (yyvsp[0].StrVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 242:
-#line 2442 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2440 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {  // Is it an integer reference...?
     (yyval.ValIDVal) = ValID::createLocalID((yyvsp[0].UIntVal));
     CHECK_FOR_ERROR
@@ -5078,7 +5074,7 @@
     break;
 
   case 243:
-#line 2446 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2444 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[0].UIntVal));
     CHECK_FOR_ERROR
@@ -5086,23 +5082,25 @@
     break;
 
   case 244:
-#line 2450 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2448 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
-    (yyval.ValIDVal) = ValID::createLocalName((yyvsp[0].StrVal));
+    (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 245:
-#line 2454 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2453 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
-    (yyval.ValIDVal) = ValID::createGlobalName((yyvsp[0].StrVal));
+    (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[0].StrVal));
+    delete (yyvsp[0].StrVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 248:
-#line 2466 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2466 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5113,7 +5111,7 @@
     break;
 
   case 249:
-#line 2475 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2475 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
@@ -5121,7 +5119,7 @@
     break;
 
   case 250:
-#line 2479 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2479 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
@@ -5129,7 +5127,7 @@
     break;
 
   case 251:
-#line 2488 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2488 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
     CHECK_FOR_ERROR
@@ -5141,7 +5139,7 @@
     break;
 
   case 252:
-#line 2497 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2497 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal)))
       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
@@ -5154,7 +5152,7 @@
     break;
 
   case 253:
-#line 2506 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2506 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {          // Empty space between instruction lists
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
     CHECK_FOR_ERROR
@@ -5162,15 +5160,17 @@
     break;
 
   case 254:
-#line 2510 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2510 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {             // Labelled (named) basic block
-    (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName((yyvsp[0].StrVal)));
+    (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[0].StrVal)));
+    delete (yyvsp[0].StrVal);
     CHECK_FOR_ERROR
+
   ;}
     break;
 
   case 255:
-#line 2515 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2517 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {              // Return with a result...
     (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
@@ -5178,7 +5178,7 @@
     break;
 
   case 256:
-#line 2519 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2521 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                                    // Return with no result...
     (yyval.TermInstVal) = new ReturnInst();
     CHECK_FOR_ERROR
@@ -5186,7 +5186,7 @@
     break;
 
   case 257:
-#line 2523 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2525 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                           // Unconditional Branch...
     BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
@@ -5195,7 +5195,7 @@
     break;
 
   case 258:
-#line 2528 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2530 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {  
     assert(cast<IntegerType>((yyvsp[-7].PrimType))->getBitWidth() == 1 && "Not Bool?");
     BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal));
@@ -5209,7 +5209,7 @@
     break;
 
   case 259:
-#line 2538 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2540 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal));
     CHECK_FOR_ERROR
@@ -5232,7 +5232,7 @@
     break;
 
   case 260:
-#line 2557 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2559 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal));
     CHECK_FOR_ERROR
@@ -5245,7 +5245,7 @@
     break;
 
   case 261:
-#line 2567 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2569 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -5328,7 +5328,7 @@
     break;
 
   case 262:
-#line 2646 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2648 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
@@ -5336,7 +5336,7 @@
     break;
 
   case 263:
-#line 2650 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2652 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
@@ -5344,7 +5344,7 @@
     break;
 
   case 264:
-#line 2657 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2659 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = (yyvsp[-5].JumpTable);
     Constant *V = cast<Constant>(getExistingVal((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
@@ -5359,7 +5359,7 @@
     break;
 
   case 265:
-#line 2668 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2670 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getExistingVal((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
@@ -5375,7 +5375,7 @@
     break;
 
   case 266:
-#line 2681 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2683 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     // Is this definition named?? if so, assign the name...
     setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
@@ -5387,7 +5387,7 @@
     break;
 
   case 267:
-#line 2691 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2693 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {    // Used for PHI nodes
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription());
@@ -5402,7 +5402,7 @@
     break;
 
   case 268:
-#line 2702 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2704 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.PHIList) = (yyvsp[-6].PHIList);
     Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal));
@@ -5414,7 +5414,7 @@
     break;
 
   case 269:
-#line 2712 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2714 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {    
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5427,7 +5427,7 @@
     break;
 
   case 270:
-#line 2721 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2723 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5440,17 +5440,17 @@
     break;
 
   case 271:
-#line 2730 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2732 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueRefList) = new ValueRefList(); ;}
     break;
 
   case 272:
-#line 2733 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2735 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
   case 273:
-#line 2734 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2736 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = (yyvsp[-2].ValueList);
     (yyval.ValueList)->push_back((yyvsp[0].ValueVal));
@@ -5459,7 +5459,7 @@
     break;
 
   case 274:
-#line 2741 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2743 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -5467,7 +5467,7 @@
     break;
 
   case 275:
-#line 2745 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2747 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -5475,7 +5475,7 @@
     break;
 
   case 276:
-#line 2750 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2752 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5500,7 +5500,7 @@
     break;
 
   case 277:
-#line 2771 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2773 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5521,7 +5521,7 @@
     break;
 
   case 278:
-#line 2788 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2790 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5539,7 +5539,7 @@
     break;
 
   case 279:
-#line 2802 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2804 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5557,7 +5557,7 @@
     break;
 
   case 280:
-#line 2816 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -5573,7 +5573,7 @@
     break;
 
   case 281:
-#line 2828 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2830 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty)
       GEN_ERROR("select condition must be boolean");
@@ -5585,7 +5585,7 @@
     break;
 
   case 282:
-#line 2836 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2838 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -5596,7 +5596,7 @@
     break;
 
   case 283:
-#line 2843 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2845 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -5606,7 +5606,7 @@
     break;
 
   case 284:
-#line 2849 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -5616,7 +5616,7 @@
     break;
 
   case 285:
-#line 2855 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2857 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -5626,7 +5626,7 @@
     break;
 
   case 286:
-#line 2861 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2863 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
     if (!Ty->isFirstClassType())
@@ -5645,7 +5645,7 @@
     break;
 
   case 287:
-#line 2877 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2879 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -5733,7 +5733,7 @@
     break;
 
   case 288:
-#line 2961 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2963 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.InstVal) = (yyvsp[0].InstVal);
     CHECK_FOR_ERROR
@@ -5741,7 +5741,7 @@
     break;
 
   case 289:
-#line 2966 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2968 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -5749,7 +5749,7 @@
     break;
 
   case 290:
-#line 2970 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2972 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -5757,7 +5757,7 @@
     break;
 
   case 291:
-#line 2977 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2979 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5768,7 +5768,7 @@
     break;
 
   case 292:
-#line 2984 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2986 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -5780,7 +5780,7 @@
     break;
 
   case 293:
-#line 2992 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 2994 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5791,7 +5791,7 @@
     break;
 
   case 294:
-#line 2999 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3001 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -5803,7 +5803,7 @@
     break;
 
   case 295:
-#line 3007 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3009 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " + 
@@ -5814,7 +5814,7 @@
     break;
 
   case 296:
-#line 3015 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3017 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5832,7 +5832,7 @@
     break;
 
   case 297:
-#line 3029 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3031 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5853,7 +5853,7 @@
     break;
 
   case 298:
-#line 3046 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -6144,7 +6144,7 @@
 }
 
 
-#line 3063 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 3065 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions


Index: llvm/lib/AsmParser/llvmAsmParser.h.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.77 llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.78
--- llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.77	Sat May 19 02:22:10 2007
+++ llvm/lib/AsmParser/llvmAsmParser.h.cvs	Tue May 22 13:52:55 2007
@@ -307,7 +307,7 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 955 "/proj/llvm/llvm-2/lib/AsmParser/llvmAsmParser.y"
+#line 957 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -343,8 +343,8 @@
   double                            FPVal;
   bool                              BoolVal;
 
-  char                             *StrVal;   // This memory is strdup'd!
-  llvm::ValID                       ValIDVal; // strdup'd memory maybe!
+  std::string                      *StrVal;   // This memory must be deleted
+  llvm::ValID                       ValIDVal;
 
   llvm::Instruction::BinaryOps      BinaryOpVal;
   llvm::Instruction::TermOps        TermOpVal;


Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.99 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.100
--- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.99	Sat May 19 02:22:10 2007
+++ llvm/lib/AsmParser/llvmAsmParser.y.cvs	Tue May 22 13:52:55 2007
@@ -282,7 +282,7 @@
       return CurModule.Types[D.Num];
     break;
   case ValID::LocalName:                 // Is it a named definition?
-    if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
+    if (const Type *N = CurModule.CurrentModule->getTypeByName(D.getName())) {
       D.destroy();  // Free old strdup'd memory...
       return N;
     }
@@ -360,7 +360,7 @@
     if (!inFunctionScope()) 
       return 0;
     ValueSymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable();
-    Value *N = SymTab.lookup(D.Name);
+    Value *N = SymTab.lookup(D.getName());
     if (N == 0) 
       return 0;
     if (N->getType() != Ty)
@@ -371,7 +371,7 @@
   }
   case ValID::GlobalName: {                // Is it a named definition?
     ValueSymbolTable &SymTab = CurModule.CurrentModule->getValueSymbolTable();
-    Value *N = SymTab.lookup(D.Name);
+    Value *N = SymTab.lookup(D.getName());
     if (N == 0) 
       return 0;
     if (N->getType() != Ty)
@@ -550,7 +550,7 @@
   
   // We haven't seen this BB before and its first mention is a definition. 
   // Just create it and return it.
-  std::string Name (ID.Type == ValID::LocalName ? ID.Name : "");
+  std::string Name (ID.Type == ValID::LocalName ? ID.getName() : "");
   BB = new BasicBlock(Name, CurFun.CurrentFunction);
   if (ID.Type == ValID::LocalID) {
     assert(ID.Num == CurFun.NextValNum && "Invalid new block number");
@@ -572,7 +572,7 @@
   if (BBI != CurFun.BBForwardRefs.end()) {
     BB = BBI->second;
   } if (ID.Type == ValID::LocalName) {
-    std::string Name = ID.Name;
+    std::string Name = ID.getName();
     Value *N = CurFun.CurrentFunction->getValueSymbolTable().lookup(Name);
     if (N)
       if (N->getType()->getTypeID() == Type::LabelTyID)
@@ -603,7 +603,7 @@
   // Otherwise, this block has not been seen before, create it.
   std::string Name;
   if (ID.Type == ValID::LocalName)
-    Name = ID.Name;
+    Name = ID.getName();
   BB = new BasicBlock(Name, CurFun.CurrentFunction);
 
   // Insert it in the forward refs map.
@@ -675,10 +675,12 @@
 // name is not null) things referencing Name can be resolved.  Otherwise, things
 // refering to the number can be resolved.  Do this now.
 //
-static void ResolveTypeTo(char *Name, const Type *ToTy) {
+static void ResolveTypeTo(std::string *Name, const Type *ToTy) {
   ValID D;
-  if (Name) D = ValID::createLocalName(Name);
-  else      D = ValID::createLocalID(CurModule.Types.size());
+  if (Name)
+    D = ValID::createLocalName(*Name);
+  else      
+    D = ValID::createLocalID(CurModule.Types.size());
 
   std::map<ValID, PATypeHolder>::iterator I =
     CurModule.LateResolveTypes.find(D);
@@ -692,10 +694,10 @@
 // null potentially, in which case this is a noop.  The string passed in is
 // assumed to be a malloc'd string buffer, and is free'd by this function.
 //
-static void setValueName(Value *V, char *NameStr) {
+static void setValueName(Value *V, std::string *NameStr) {
   if (!NameStr) return;
-  std::string Name(NameStr);      // Copy string
-  free(NameStr);                  // Free old string
+  std::string Name(*NameStr);      // Copy string
+  delete NameStr;                  // Free old string
 
   if (V->getType() == Type::VoidTy) {
     GenerateError("Can't assign name '" + Name+"' to value with void type");
@@ -717,7 +719,7 @@
 /// ParseGlobalVariable - Handle parsing of a global.  If Initializer is null,
 /// this is a declaration, otherwise it is a definition.
 static GlobalVariable *
-ParseGlobalVariable(char *NameStr,
+ParseGlobalVariable(std::string *NameStr,
                     GlobalValue::LinkageTypes Linkage,
                     GlobalValue::VisibilityTypes Visibility,
                     bool isConstantGlobal, const Type *Ty,
@@ -731,15 +733,15 @@
 
   std::string Name;
   if (NameStr) {
-    Name = NameStr;      // Copy string
-    free(NameStr);       // Free old string
+    Name = *NameStr;      // Copy string
+    delete NameStr;       // Free old string
   }
 
   // See if this global value was forward referenced.  If so, recycle the
   // object.
   ValID ID;
   if (!Name.empty()) {
-    ID = ValID::createGlobalName((char*)Name.c_str());
+    ID = ValID::createGlobalName(Name);
   } else {
     ID = ValID::createGlobalID(CurModule.Values.size());
   }
@@ -792,12 +794,12 @@
 // This function returns true if the type has already been defined, but is
 // allowed to be redefined in the specified context.  If the name is a new name
 // for the type plane, it is inserted and false is returned.
-static bool setTypeName(const Type *T, char *NameStr) {
+static bool setTypeName(const Type *T, std::string *NameStr) {
   assert(!inFunctionScope() && "Can't give types function-local names!");
   if (NameStr == 0) return false;
  
-  std::string Name(NameStr);      // Copy string
-  free(NameStr);                  // Free old string
+  std::string Name(*NameStr);      // Copy string
+  delete NameStr;                  // Free old string
 
   // We don't allow assigning names to void type
   if (T == Type::VoidTy) {
@@ -987,8 +989,8 @@
   double                            FPVal;
   bool                              BoolVal;
 
-  char                             *StrVal;   // This memory is strdup'd!
-  llvm::ValID                       ValIDVal; // strdup'd memory maybe!
+  std::string                      *StrVal;   // This memory must be deleted
+  llvm::ValID                       ValIDVal;
 
   llvm::Instruction::BinaryOps      BinaryOpVal;
   llvm::Instruction::TermOps        TermOpVal;
@@ -1051,13 +1053,15 @@
 %token <PrimType> FLOAT DOUBLE LABEL
 %token TYPE
 
+
 %token<StrVal> LOCALVAR GLOBALVAR LABELSTR 
 %token<StrVal> STRINGCONSTANT ATSTRINGCONSTANT PCTSTRINGCONSTANT
 %type <StrVal> LocalName OptLocalName OptLocalAssign
 %type <StrVal> GlobalName OptGlobalAssign GlobalAssign
-%type <UIntVal> OptAlign OptCAlign
 %type <StrVal> OptSection SectionString
 
+%type <UIntVal> OptAlign OptCAlign
+
 %token ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK
 %token DECLARE DEFINE GLOBAL CONSTANT SECTION ALIAS VOLATILE THREAD_LOCAL
 %token TO DOTDOTDOT NULL_TOK UNDEF INTERNAL LINKONCE WEAK APPENDING
@@ -1139,7 +1143,7 @@
 IntType :  INTTYPE;
 FPType   : FLOAT | DOUBLE;
 
-LocalName : LOCALVAR | STRINGCONSTANT | PCTSTRINGCONSTANT
+LocalName : LOCALVAR | STRINGCONSTANT | PCTSTRINGCONSTANT ;
 OptLocalName : LocalName | /*empty*/ { $$ = 0; };
 
 /// OptLocalAssign - Value producing statements have an optional assignment
@@ -1153,7 +1157,7 @@
     CHECK_FOR_ERROR
   };
 
-GlobalName : GLOBALVAR | ATSTRINGCONSTANT;
+GlobalName : GLOBALVAR | ATSTRINGCONSTANT ;
 
 OptGlobalAssign : GlobalAssign
   | /*empty*/ {
@@ -1262,8 +1266,8 @@
 
 
 SectionString : SECTION STRINGCONSTANT {
-  for (unsigned i = 0, e = strlen($2); i != e; ++i)
-    if ($2[i] == '"' || $2[i] == '\\')
+  for (unsigned i = 0, e = $2->length(); i != e; ++i)
+    if ((*$2)[i] == '"' || (*$2)[i] == '\\')
       GEN_ERROR("Invalid character in section name");
   $$ = $2;
   CHECK_FOR_ERROR
@@ -1278,8 +1282,8 @@
 GlobalVarAttributes : /* empty */ {} |
                      ',' GlobalVarAttribute GlobalVarAttributes {};
 GlobalVarAttribute : SectionString {
-    CurGV->setSection($1);
-    free($1);
+    CurGV->setSection(*$1);
+    delete $1;
     CHECK_FOR_ERROR
   } 
   | ALIGN EUINT64VAL {
@@ -1561,21 +1565,19 @@
 
     int NumElements = ATy->getNumElements();
     const Type *ETy = ATy->getElementType();
-    char *EndStr = UnEscapeLexed($3, true);
-    if (NumElements != -1 && NumElements != (EndStr-$3))
+    if (NumElements != -1 && NumElements != int($3->length()))
       GEN_ERROR("Can't build string constant of size " + 
-                     itostr((int)(EndStr-$3)) +
+                     itostr((int)($3->length())) +
                      " when array has size " + itostr(NumElements) + "");
     std::vector<Constant*> Vals;
     if (ETy == Type::Int8Ty) {
-      for (unsigned char *C = (unsigned char *)$3; 
-        C != (unsigned char*)EndStr; ++C)
-      Vals.push_back(ConstantInt::get(ETy, *C));
+      for (unsigned i = 0; i < $3->length(); ++i)
+        Vals.push_back(ConstantInt::get(ETy, (*$3)[i]));
     } else {
-      free($3);
+      delete $3;
       GEN_ERROR("Cannot build string arrays of non byte sized elements");
     }
-    free($3);
+    delete $3;
     $$ = ConstantArray::get(ATy, Vals);
     delete $1;
     CHECK_FOR_ERROR
@@ -1759,7 +1761,7 @@
       } else {
         std::string Name;
         if ($2.Type == ValID::GlobalName)
-          Name = $2.Name;
+          Name = $2.getName();
         else if ($2.Type != ValID::GlobalID)
           GEN_ERROR("Invalid reference to global");
 
@@ -2089,13 +2091,17 @@
     CHECK_FOR_ERROR
   }
   | OptGlobalAssign GVVisibilityStyle ALIAS AliasLinkage AliaseeRef {
-    std::string Name($1);
+    std::string Name;
+    if ($1) {
+      Name = *$1;
+      delete $1;
+    }
     if (Name.empty())
       GEN_ERROR("Alias name cannot be empty");
     
     Constant* Aliasee = $5;
     if (Aliasee == 0)
-      GEN_ERROR(std::string("Invalid aliasee for alias: ") + $1);
+      GEN_ERROR(std::string("Invalid aliasee for alias: ") + Name);
 
     GlobalAlias* GA = new GlobalAlias(Aliasee->getType(), $4, Name, Aliasee,
                                       CurModule.CurrentModule);
@@ -2114,36 +2120,33 @@
 
 AsmBlock : STRINGCONSTANT {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
-  char *EndStr = UnEscapeLexed($1, true);
-  std::string NewAsm($1, EndStr);
-  free($1);
-
   if (AsmSoFar.empty())
-    CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
+    CurModule.CurrentModule->setModuleInlineAsm(*$1);
   else
-    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+NewAsm);
+    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+*$1);
+  delete $1;
   CHECK_FOR_ERROR
 };
 
 TargetDefinition : TRIPLE '=' STRINGCONSTANT {
-    CurModule.CurrentModule->setTargetTriple($3);
-    free($3);
+    CurModule.CurrentModule->setTargetTriple(*$3);
+    delete $3;
   }
   | DATALAYOUT '=' STRINGCONSTANT {
-    CurModule.CurrentModule->setDataLayout($3);
-    free($3);
+    CurModule.CurrentModule->setDataLayout(*$3);
+    delete $3;
   };
 
 LibrariesDefinition : '[' LibList ']';
 
 LibList : LibList ',' STRINGCONSTANT {
-          CurModule.CurrentModule->addLibrary($3);
-          free($3);
+          CurModule.CurrentModule->addLibrary(*$3);
+          delete $3;
           CHECK_FOR_ERROR
         }
         | STRINGCONSTANT {
-          CurModule.CurrentModule->addLibrary($1);
-          free($1);
+          CurModule.CurrentModule->addLibrary(*$1);
+          delete $1;
           CHECK_FOR_ERROR
         }
         | /* empty: end of list */ {
@@ -2205,9 +2208,8 @@
 
 FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' 
                   OptFuncAttrs OptSection OptAlign {
-  UnEscapeLexed($3);
-  std::string FunctionName($3);
-  free($3);  // Free strdup'd memory!
+  std::string FunctionName(*$3);
+  delete $3;  // Free strdup'd memory!
   
   // Check the function result for abstractness if this is a define. We should
   // have no abstract types at this point
@@ -2296,8 +2298,8 @@
   Fn->setCallingConv($1);
   Fn->setAlignment($9);
   if ($8) {
-    Fn->setSection($8);
-    free($8);
+    Fn->setSection(*$8);
+    delete $8;
   }
 
   // Add all of the arguments we parsed to the function...
@@ -2314,7 +2316,7 @@
     for (ArgListType::iterator I = $5->begin(); 
          I != $5->end() && ArgIt != ArgEnd; ++I, ++ArgIt) {
       delete I->Ty;                          // Delete the typeholder...
-      setValueName(ArgIt, I->Name);          // Insert arg into symtab...
+      setValueName(ArgIt, I->Name);       // Insert arg into symtab...
       CHECK_FOR_ERROR
       InsertValue(ArgIt);
       Idx++;
@@ -2426,13 +2428,9 @@
     CHECK_FOR_ERROR
   }
   | ASM_TOK OptSideEffect STRINGCONSTANT ',' STRINGCONSTANT {
-    char *End = UnEscapeLexed($3, true);
-    std::string AsmStr = std::string($3, End);
-    End = UnEscapeLexed($5, true);
-    std::string Constraints = std::string($5, End);
-    $$ = ValID::createInlineAsm(AsmStr, Constraints, $2);
-    free($3);
-    free($5);
+    $$ = ValID::createInlineAsm(*$3, *$5, $2);
+    delete $3;
+    delete $5;
     CHECK_FOR_ERROR
   };
 
@@ -2448,11 +2446,13 @@
     CHECK_FOR_ERROR
   }
   | LocalName {                   // Is it a named reference...?
-    $$ = ValID::createLocalName($1);
+    $$ = ValID::createLocalName(*$1);
+    delete $1;
     CHECK_FOR_ERROR
   }
   | GlobalName {                   // Is it a named reference...?
-    $$ = ValID::createGlobalName($1);
+    $$ = ValID::createGlobalName(*$1);
+    delete $1;
     CHECK_FOR_ERROR
   };
 
@@ -2508,8 +2508,10 @@
     CHECK_FOR_ERROR
   }
   | LABELSTR {             // Labelled (named) basic block
-    $$ = defineBBVal(ValID::createLocalName($1));
+    $$ = defineBBVal(ValID::createLocalName(*$1));
+    delete $1;
     CHECK_FOR_ERROR
+
   };
 
 BBTerminatorInst : RET ResolvedVal {              // Return with a result...






More information about the llvm-commits mailing list