diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c
index 9aa3762..76ad408 100644
--- a/bindings/ocaml/llvm/llvm_ocaml.c
+++ b/bindings/ocaml/llvm/llvm_ocaml.c
@@ -329,7 +329,7 @@
 }
 
 CAMLprim value llvm_refine_type(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy){
-  LLVMRefineAbstractType(AbstractTy, ConcreteTy);
+  LLVMRefineType(AbstractTy, ConcreteTy);
   return Val_unit;
 }
 
diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h
index d3e7a08..bbef134 100644
--- a/include/llvm-c/Core.h
+++ b/include/llvm-c/Core.h
@@ -224,9 +224,6 @@
 /** See llvm::LLVMTypeKind::getTypeID. */
 LLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty);
 
-/** See llvm::DerivedType::refineAbstractTypeTo. */
-void LLVMRefineAbstractType(LLVMTypeRef AbstractType, LLVMTypeRef ConcreteType);
-
 /* Operations on integer types */
 LLVMTypeRef LLVMInt1Type(void);
 LLVMTypeRef LLVMInt8Type(void);
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index d9b6bbe..336ae7e 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -384,7 +384,7 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 14 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -1340,7 +1340,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 949 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 949 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -3503,152 +3503,152 @@
   switch (yyn)
     {
         case 29:
-#line 1117 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1117 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
     break;
 
   case 30:
-#line 1117 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1117 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 31:
-#line 1118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1118 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 32:
-#line 1118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1118 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 33:
-#line 1119 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1119 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 34:
-#line 1119 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1119 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 35:
-#line 1120 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 36:
-#line 1120 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 37:
-#line 1121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 38:
-#line 1121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 39:
-#line 1125 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1125 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 40:
-#line 1125 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1125 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 41:
-#line 1126 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 42:
-#line 1126 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1126 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 43:
-#line 1127 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1127 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 44:
-#line 1127 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1127 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 45:
-#line 1128 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1128 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 46:
-#line 1128 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1128 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 47:
-#line 1129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1129 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 48:
-#line 1129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1129 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 49:
-#line 1130 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 50:
-#line 1130 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 51:
-#line 1131 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 52:
-#line 1131 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1131 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 53:
-#line 1132 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1132 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 54:
-#line 1133 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1133 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 65:
-#line 1142 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1142 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 66:
-#line 1144 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1144 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;}
     break;
 
   case 67:
-#line 1145 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1145 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=0; ;}
     break;
 
   case 68:
-#line 1149 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1149 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3656,7 +3656,7 @@
     break;
 
   case 69:
-#line 1153 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1153 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3664,7 +3664,7 @@
     break;
 
   case 73:
-#line 1161 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1161 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3672,7 +3672,7 @@
     break;
 
   case 74:
-#line 1166 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1166 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3680,157 +3680,157 @@
     break;
 
   case 75:
-#line 1172 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1172 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 76:
-#line 1173 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1173 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 77:
-#line 1174 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1174 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 78:
-#line 1175 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1175 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 79:
-#line 1176 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1176 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 80:
-#line 1177 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1177 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::CommonLinkage; ;}
     break;
 
   case 81:
-#line 1181 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1181 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 82:
-#line 1182 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1182 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 83:
-#line 1183 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1183 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 84:
-#line 1187 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1187 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 85:
-#line 1188 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1188 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 86:
-#line 1189 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1189 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;}
     break;
 
   case 87:
-#line 1190 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1190 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
     break;
 
   case 88:
-#line 1194 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1194 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 89:
-#line 1195 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1195 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 90:
-#line 1196 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1196 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 91:
-#line 1200 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1200 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 92:
-#line 1201 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1201 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 93:
-#line 1202 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1202 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 94:
-#line 1203 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1203 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 95:
-#line 1204 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1204 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 96:
-#line 1208 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1208 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 97:
-#line 1209 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 98:
-#line 1210 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1210 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 99:
-#line 1213 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1213 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 100:
-#line 1214 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1214 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 101:
-#line 1215 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1215 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 102:
-#line 1216 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1216 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 103:
-#line 1217 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1217 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 104:
-#line 1218 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1218 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
     break;
 
   case 105:
-#line 1219 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                    if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
                      GEN_ERROR("Calling conv too large");
@@ -3840,129 +3840,129 @@
     break;
 
   case 106:
-#line 1226 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1226 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
     break;
 
   case 107:
-#line 1227 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1227 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
     break;
 
   case 108:
-#line 1228 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1228 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
     break;
 
   case 109:
-#line 1229 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1229 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
     break;
 
   case 110:
-#line 1230 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1230 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::InReg;     ;}
     break;
 
   case 111:
-#line 1231 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1231 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::StructRet; ;}
     break;
 
   case 112:
-#line 1232 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1232 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoAlias;   ;}
     break;
 
   case 113:
-#line 1233 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1233 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ByVal;     ;}
     break;
 
   case 114:
-#line 1234 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1234 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::Nest;      ;}
     break;
 
   case 115:
-#line 1235 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1235 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = 
                           ParamAttr::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val));    ;}
     break;
 
   case 116:
-#line 1239 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1239 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 117:
-#line 1240 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1240 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
               ;}
     break;
 
   case 118:
-#line 1245 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1245 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;}
     break;
 
   case 119:
-#line 1246 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1246 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;}
     break;
 
   case 120:
-#line 1247 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1247 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ZExt;     ;}
     break;
 
   case 121:
-#line 1248 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1248 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::SExt;     ;}
     break;
 
   case 122:
-#line 1249 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1249 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ReadNone; ;}
     break;
 
   case 123:
-#line 1250 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1250 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::ReadOnly; ;}
     break;
 
   case 124:
-#line 1253 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1253 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = ParamAttr::None; ;}
     break;
 
   case 125:
-#line 1254 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1254 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
               ;}
     break;
 
   case 126:
-#line 1259 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1259 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 127:
-#line 1260 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1260 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
               ;}
     break;
 
   case 128:
-#line 1267 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1267 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 129:
-#line 1268 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1268 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3972,12 +3972,12 @@
     break;
 
   case 130:
-#line 1274 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1274 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 131:
-#line 1275 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1275 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3987,7 +3987,7 @@
     break;
 
   case 132:
-#line 1284 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1284 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i)
     if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\')
@@ -3998,27 +3998,27 @@
     break;
 
   case 133:
-#line 1292 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1292 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 134:
-#line 1293 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1293 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
     break;
 
   case 135:
-#line 1298 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1298 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 136:
-#line 1299 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1299 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 137:
-#line 1300 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1300 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV->setSection(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -4027,7 +4027,7 @@
     break;
 
   case 138:
-#line 1305 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1305 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two");
@@ -4037,7 +4037,7 @@
     break;
 
   case 146:
-#line 1321 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1321 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
@@ -4045,7 +4045,7 @@
     break;
 
   case 147:
-#line 1325 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1325 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
     CHECK_FOR_ERROR
@@ -4053,7 +4053,7 @@
     break;
 
   case 148:
-#line 1329 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1329 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                             // Pointer type?
     if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy)
       GEN_ERROR("Cannot form a pointer to a basic block");
@@ -4064,7 +4064,7 @@
     break;
 
   case 149:
-#line 1336 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1336 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {            // Named types are also simple types...
     const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
     CHECK_FOR_ERROR
@@ -4073,7 +4073,7 @@
     break;
 
   case 150:
-#line 1341 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1341 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Type UpReference
     if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
@@ -4085,7 +4085,7 @@
     break;
 
   case 151:
-#line 1349 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1349 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4118,7 +4118,7 @@
     break;
 
   case 152:
-#line 1378 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1378 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4146,7 +4146,7 @@
     break;
 
   case 153:
-#line 1403 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1403 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Sized array type?
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
     delete (yyvsp[(4) - (5)].TypeVal);
@@ -4155,7 +4155,7 @@
     break;
 
   case 154:
-#line 1408 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1408 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Vector type?
      const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
      if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
@@ -4169,7 +4169,7 @@
     break;
 
   case 155:
-#line 1418 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1418 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
@@ -4183,7 +4183,7 @@
     break;
 
   case 156:
-#line 1428 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1428 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                  // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
@@ -4191,7 +4191,7 @@
     break;
 
   case 157:
-#line 1432 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1432 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
@@ -4205,7 +4205,7 @@
     break;
 
   case 158:
-#line 1442 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1442 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                         // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
@@ -4213,7 +4213,7 @@
     break;
 
   case 159:
-#line 1449 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1449 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4223,7 +4223,7 @@
     break;
 
   case 160:
-#line 1458 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1458 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription());
@@ -4234,14 +4234,14 @@
     break;
 
   case 161:
-#line 1465 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1465 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
   ;}
     break;
 
   case 162:
-#line 1470 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1470 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
@@ -4250,7 +4250,7 @@
     break;
 
   case 163:
-#line 1475 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1475 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
     CHECK_FOR_ERROR
@@ -4258,7 +4258,7 @@
     break;
 
   case 165:
-#line 1483 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1483 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -4269,7 +4269,7 @@
     break;
 
   case 166:
-#line 1490 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1490 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
@@ -4280,7 +4280,7 @@
     break;
 
   case 167:
-#line 1497 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1497 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
@@ -4288,7 +4288,7 @@
     break;
 
   case 168:
-#line 1505 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1505 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeList) = new std::list<PATypeHolder>();
     (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal)); 
@@ -4298,7 +4298,7 @@
     break;
 
   case 169:
-#line 1511 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1511 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal)); 
     delete (yyvsp[(3) - (3)].TypeVal);
@@ -4307,7 +4307,7 @@
     break;
 
   case 170:
-#line 1523 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1523 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4339,7 +4339,7 @@
     break;
 
   case 171:
-#line 1551 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1551 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4359,7 +4359,7 @@
     break;
 
   case 172:
-#line 1567 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1567 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4390,7 +4390,7 @@
     break;
 
   case 173:
-#line 1594 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1594 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4422,7 +4422,7 @@
     break;
 
   case 174:
-#line 1622 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1622 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get());
     if (STy == 0)
@@ -4452,7 +4452,7 @@
     break;
 
   case 175:
-#line 1648 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1648 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4476,7 +4476,7 @@
     break;
 
   case 176:
-#line 1668 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1668 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get());
     if (STy == 0)
@@ -4506,7 +4506,7 @@
     break;
 
   case 177:
-#line 1694 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1694 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
@@ -4530,7 +4530,7 @@
     break;
 
   case 178:
-#line 1714 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1714 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4546,7 +4546,7 @@
     break;
 
   case 179:
-#line 1726 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1726 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4557,7 +4557,7 @@
     break;
 
   case 180:
-#line 1733 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1733 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4627,7 +4627,7 @@
     break;
 
   case 181:
-#line 1799 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1799 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4641,7 +4641,7 @@
     break;
 
   case 182:
-#line 1809 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1809 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4655,7 +4655,7 @@
     break;
 
   case 183:
-#line 1819 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1819 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4665,7 +4665,7 @@
     break;
 
   case 184:
-#line 1825 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1825 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4679,7 +4679,7 @@
     break;
 
   case 185:
-#line 1835 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1835 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4689,7 +4689,7 @@
     break;
 
   case 186:
-#line 1841 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1841 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4703,7 +4703,7 @@
     break;
 
   case 187:
-#line 1851 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1851 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                      // Boolean constants
     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getTrue();
@@ -4712,7 +4712,7 @@
     break;
 
   case 188:
-#line 1856 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1856 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Boolean constants
     assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getFalse();
@@ -4721,7 +4721,7 @@
     break;
 
   case 189:
-#line 1861 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1861 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Floating point constants
     if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal)))
       GEN_ERROR("Floating point constant invalid for type");
@@ -4736,7 +4736,7 @@
     break;
 
   case 190:
-#line 1874 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1874 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
@@ -4752,7 +4752,7 @@
     break;
 
   case 191:
-#line 1886 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1886 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand");
@@ -4777,7 +4777,7 @@
     break;
 
   case 192:
-#line 1907 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1907 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
       GEN_ERROR("Select condition must be of boolean type");
@@ -4789,7 +4789,7 @@
     break;
 
   case 193:
-#line 1915 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1915 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Binary operator types must match");
@@ -4799,7 +4799,7 @@
     break;
 
   case 194:
-#line 1921 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1921 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match");
@@ -4814,7 +4814,7 @@
     break;
 
   case 195:
-#line 1932 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1932 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match");
@@ -4823,7 +4823,7 @@
     break;
 
   case 196:
-#line 1937 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1937 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("fcmp operand types must match");
@@ -4832,7 +4832,7 @@
     break;
 
   case 197:
-#line 1942 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1942 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vicmp operand types must match");
@@ -4841,7 +4841,7 @@
     break;
 
   case 198:
-#line 1947 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1947 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vfcmp operand types must match");
@@ -4850,7 +4850,7 @@
     break;
 
   case 199:
-#line 1952 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1952 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -4860,7 +4860,7 @@
     break;
 
   case 200:
-#line 1958 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1958 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -4870,7 +4870,7 @@
     break;
 
   case 201:
-#line 1964 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1964 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -4880,7 +4880,7 @@
     break;
 
   case 202:
-#line 1973 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1973 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
     CHECK_FOR_ERROR
@@ -4888,7 +4888,7 @@
     break;
 
   case 203:
-#line 1977 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1977 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstVector) = new std::vector<Constant*>();
     (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
@@ -4897,27 +4897,27 @@
     break;
 
   case 204:
-#line 1985 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1985 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 205:
-#line 1985 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1985 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 206:
-#line 1988 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1988 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 207:
-#line 1988 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1988 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 208:
-#line 1991 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1991 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get();
     Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal));
@@ -4933,7 +4933,7 @@
     break;
 
   case 209:
-#line 2003 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2003 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Constant *Val = (yyvsp[(3) - (6)].ConstVal);
     const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
@@ -4949,7 +4949,7 @@
     break;
 
   case 210:
-#line 2024 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2024 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4958,7 +4958,7 @@
     break;
 
   case 211:
-#line 2029 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2029 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4967,12 +4967,12 @@
     break;
 
   case 214:
-#line 2042 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2042 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = false; ;}
     break;
 
   case 215:
-#line 2042 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2042 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
@@ -4980,26 +4980,26 @@
     break;
 
   case 216:
-#line 2046 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2046 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = true; ;}
     break;
 
   case 217:
-#line 2046 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2046 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 218:
-#line 2049 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2049 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 219:
-#line 2052 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2052 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription());
@@ -5027,7 +5027,7 @@
     break;
 
   case 220:
-#line 2076 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2076 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType));
 
@@ -5042,7 +5042,7 @@
     break;
 
   case 221:
-#line 2088 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2088 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { 
     /* "Externally Visible" Linkage */
     if ((yyvsp[(5) - (6)].ConstVal) == 0) 
@@ -5054,14 +5054,14 @@
     break;
 
   case 222:
-#line 2095 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2095 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 223:
-#line 2099 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2099 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(6) - (7)].ConstVal) == 0) 
       GEN_ERROR("Global value initializer is not a constant");
@@ -5071,14 +5071,14 @@
     break;
 
   case 224:
-#line 2104 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2104 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 225:
-#line 2108 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2108 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription());
@@ -5089,7 +5089,7 @@
     break;
 
   case 226:
-#line 2114 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2114 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
     CHECK_FOR_ERROR
@@ -5097,7 +5097,7 @@
     break;
 
   case 227:
-#line 2118 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2118 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::string Name;
     if ((yyvsp[(1) - (5)].StrVal)) {
@@ -5141,21 +5141,21 @@
     break;
 
   case 228:
-#line 2158 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2158 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { 
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 229:
-#line 2161 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2161 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 230:
-#line 2167 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2167 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
   if (AsmSoFar.empty())
@@ -5168,7 +5168,7 @@
     break;
 
   case 231:
-#line 2177 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2177 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
@@ -5176,7 +5176,7 @@
     break;
 
   case 232:
-#line 2181 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2181 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
@@ -5184,7 +5184,7 @@
     break;
 
   case 234:
-#line 2188 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2188 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal));
           delete (yyvsp[(3) - (3)].StrVal);
@@ -5193,7 +5193,7 @@
     break;
 
   case 235:
-#line 2193 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2193 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal));
           delete (yyvsp[(1) - (1)].StrVal);
@@ -5202,14 +5202,14 @@
     break;
 
   case 236:
-#line 2198 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2198 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 237:
-#line 2207 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2207 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -5223,7 +5223,7 @@
     break;
 
   case 238:
-#line 2217 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2217 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -5237,7 +5237,7 @@
     break;
 
   case 239:
-#line 2228 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2228 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
     CHECK_FOR_ERROR
@@ -5245,7 +5245,7 @@
     break;
 
   case 240:
-#line 2232 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2232 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
     struct ArgListEntry E;
@@ -5258,7 +5258,7 @@
     break;
 
   case 241:
-#line 2241 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2241 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = new ArgListType;
     struct ArgListEntry E;
@@ -5271,7 +5271,7 @@
     break;
 
   case 242:
-#line 2250 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2250 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
@@ -5279,7 +5279,7 @@
     break;
 
   case 243:
-#line 2256 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2256 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   std::string FunctionName(*(yyvsp[(3) - (10)].StrVal));
   delete (yyvsp[(3) - (10)].StrVal);  // Free strdup'd memory!
@@ -5410,7 +5410,7 @@
     break;
 
   case 246:
-#line 2386 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2386 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = CurFun.CurrentFunction;
 
@@ -5422,7 +5422,7 @@
     break;
 
   case 249:
-#line 2397 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2397 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
   CHECK_FOR_ERROR
@@ -5430,7 +5430,7 @@
     break;
 
   case 250:
-#line 2402 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2402 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
     CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
@@ -5441,7 +5441,7 @@
     break;
 
   case 251:
-#line 2414 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2414 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -5449,7 +5449,7 @@
     break;
 
   case 252:
-#line 2418 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2418 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -5457,7 +5457,7 @@
     break;
 
   case 253:
-#line 2423 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2423 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // A reference to a direct constant
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
     CHECK_FOR_ERROR
@@ -5465,7 +5465,7 @@
     break;
 
   case 254:
-#line 2427 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2427 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
     CHECK_FOR_ERROR
@@ -5473,7 +5473,7 @@
     break;
 
   case 255:
-#line 2431 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2431 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Perhaps it's an FP constant?
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
     CHECK_FOR_ERROR
@@ -5481,7 +5481,7 @@
     break;
 
   case 256:
-#line 2435 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2435 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
@@ -5489,7 +5489,7 @@
     break;
 
   case 257:
-#line 2439 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2439 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
@@ -5497,7 +5497,7 @@
     break;
 
   case 258:
-#line 2443 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2443 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
@@ -5505,7 +5505,7 @@
     break;
 
   case 259:
-#line 2447 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2447 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
@@ -5513,7 +5513,7 @@
     break;
 
   case 260:
-#line 2451 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2451 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {     // A vector zero constant.
     (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
@@ -5521,7 +5521,7 @@
     break;
 
   case 261:
-#line 2455 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2455 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
     const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
     int NumElements = (yyvsp[(2) - (3)].ConstVector)->size(); 
@@ -5550,7 +5550,7 @@
     break;
 
   case 262:
-#line 2480 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2480 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
     CHECK_FOR_ERROR
@@ -5558,7 +5558,7 @@
     break;
 
   case 263:
-#line 2484 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2484 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal));
     delete (yyvsp[(3) - (5)].StrVal);
@@ -5568,7 +5568,7 @@
     break;
 
   case 264:
-#line 2494 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2494 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {  // Is it an integer reference...?
     (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
@@ -5576,7 +5576,7 @@
     break;
 
   case 265:
-#line 2498 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2498 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
@@ -5584,7 +5584,7 @@
     break;
 
   case 266:
-#line 2502 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2502 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5593,7 +5593,7 @@
     break;
 
   case 267:
-#line 2507 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2507 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5602,7 +5602,7 @@
     break;
 
   case 270:
-#line 2520 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2520 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -5613,7 +5613,7 @@
     break;
 
   case 271:
-#line 2529 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2529 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = new std::vector<Value *>();
     (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal)); 
@@ -5622,7 +5622,7 @@
     break;
 
   case 272:
-#line 2534 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2534 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal)); 
     CHECK_FOR_ERROR
@@ -5630,7 +5630,7 @@
     break;
 
   case 273:
-#line 2539 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2539 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
@@ -5638,7 +5638,7 @@
     break;
 
   case 274:
-#line 2543 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2543 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
@@ -5646,7 +5646,7 @@
     break;
 
   case 275:
-#line 2552 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2552 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
     CHECK_FOR_ERROR
@@ -5658,7 +5658,7 @@
     break;
 
   case 276:
-#line 2561 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2561 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal)))
       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
@@ -5671,7 +5671,7 @@
     break;
 
   case 277:
-#line 2570 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2570 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Empty space between instruction lists
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
     CHECK_FOR_ERROR
@@ -5679,7 +5679,7 @@
     break;
 
   case 278:
-#line 2574 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2574 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {             // Labelled (named) basic block
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5689,7 +5689,7 @@
     break;
 
   case 279:
-#line 2582 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2582 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Return with a result...
     ValueList &VL = *(yyvsp[(2) - (2)].ValueList);
     assert(!VL.empty() && "Invalid ret operands!");
@@ -5700,7 +5700,7 @@
     break;
 
   case 280:
-#line 2589 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2589 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                    // Return with no result...
     (yyval.TermInstVal) = ReturnInst::Create();
     CHECK_FOR_ERROR
@@ -5708,7 +5708,7 @@
     break;
 
   case 281:
-#line 2593 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2593 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {                           // Unconditional Branch...
     BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5717,7 +5717,7 @@
     break;
 
   case 282:
-#line 2598 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2598 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {  
     assert(cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() == 1 && "Not Bool?");
     BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal));
@@ -5731,7 +5731,7 @@
     break;
 
   case 283:
-#line 2608 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2608 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5754,7 +5754,7 @@
     break;
 
   case 284:
-#line 2627 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2627 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
     CHECK_FOR_ERROR
@@ -5767,7 +5767,7 @@
     break;
 
   case 285:
-#line 2637 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2637 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -5856,7 +5856,7 @@
     break;
 
   case 286:
-#line 2722 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2722 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
@@ -5864,7 +5864,7 @@
     break;
 
   case 287:
-#line 2726 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2726 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
@@ -5872,7 +5872,7 @@
     break;
 
   case 288:
-#line 2733 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2733 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
@@ -5887,7 +5887,7 @@
     break;
 
   case 289:
-#line 2744 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2744 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
@@ -5903,7 +5903,7 @@
     break;
 
   case 290:
-#line 2757 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2757 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Is this definition named?? if so, assign the name...
     setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
@@ -5915,7 +5915,7 @@
     break;
 
   case 291:
-#line 2767 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2767 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // Used for PHI nodes
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
@@ -5930,7 +5930,7 @@
     break;
 
   case 292:
-#line 2778 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2778 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
     Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
@@ -5942,7 +5942,7 @@
     break;
 
   case 293:
-#line 2788 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2788 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -5957,7 +5957,7 @@
     break;
 
   case 294:
-#line 2799 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2799 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     // Labels are only valid in ASMs
@@ -5969,7 +5969,7 @@
     break;
 
   case 295:
-#line 2807 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2807 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -5983,7 +5983,7 @@
     break;
 
   case 296:
-#line 2817 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2817 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0
     (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList);
@@ -5994,17 +5994,17 @@
     break;
 
   case 297:
-#line 2824 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2824 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamList) = new ParamList(); ;}
     break;
 
   case 298:
-#line 2827 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2827 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
   case 299:
-#line 2828 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2828 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
     (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
@@ -6013,7 +6013,7 @@
     break;
 
   case 300:
-#line 2835 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2835 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -6021,7 +6021,7 @@
     break;
 
   case 301:
-#line 2839 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2839 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -6029,7 +6029,7 @@
     break;
 
   case 302:
-#line 2844 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2844 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6041,7 +6041,7 @@
     CHECK_FOR_ERROR
     Value* val2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
+    (yyval.InstVal) = BinaryOperator::Create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
     delete (yyvsp[(2) - (5)].TypeVal);
@@ -6049,7 +6049,7 @@
     break;
 
   case 303:
-#line 2860 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2860 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6062,7 +6062,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
+    (yyval.InstVal) = BinaryOperator::Create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
     delete (yyvsp[(2) - (5)].TypeVal);
@@ -6070,7 +6070,7 @@
     break;
 
   case 304:
-#line 2877 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2877 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6080,7 +6080,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
@@ -6088,7 +6088,7 @@
     break;
 
   case 305:
-#line 2891 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2891 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6098,7 +6098,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
@@ -6106,7 +6106,7 @@
     break;
 
   case 306:
-#line 2905 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2905 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6116,7 +6116,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
@@ -6124,7 +6124,7 @@
     break;
 
   case 307:
-#line 2919 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2919 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6134,7 +6134,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::Create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null");
     delete (yyvsp[(3) - (6)].TypeVal);
@@ -6142,7 +6142,7 @@
     break;
 
   case 308:
-#line 2933 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2933 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6152,13 +6152,13 @@
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    (yyval.InstVal) = CastInst::create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy);
+    (yyval.InstVal) = CastInst::Create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy);
     delete (yyvsp[(4) - (4)].TypeVal);
   ;}
     break;
 
   case 309:
-#line 2945 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2945 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty)
       GEN_ERROR("select condition must be boolean");
@@ -6170,7 +6170,7 @@
     break;
 
   case 310:
-#line 2953 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2953 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6181,7 +6181,7 @@
     break;
 
   case 311:
-#line 2960 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2960 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -6191,7 +6191,7 @@
     break;
 
   case 312:
-#line 2966 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2966 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -6201,7 +6201,7 @@
     break;
 
   case 313:
-#line 2972 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2972 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -6211,7 +6211,7 @@
     break;
 
   case 314:
-#line 2978 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2978 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
     if (!Ty->isFirstClassType())
@@ -6230,7 +6230,7 @@
     break;
 
   case 315:
-#line 2994 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2994 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -6323,7 +6323,7 @@
     break;
 
   case 316:
-#line 3083 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3083 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
     CHECK_FOR_ERROR
@@ -6331,7 +6331,7 @@
     break;
 
   case 317:
-#line 3088 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3088 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -6339,7 +6339,7 @@
     break;
 
   case 318:
-#line 3092 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3092 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -6347,7 +6347,7 @@
     break;
 
   case 319:
-#line 3099 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3099 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6358,7 +6358,7 @@
     break;
 
   case 320:
-#line 3106 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3106 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6370,7 +6370,7 @@
     break;
 
   case 321:
-#line 3114 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3114 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6381,7 +6381,7 @@
     break;
 
   case 322:
-#line 3121 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3121 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6393,7 +6393,7 @@
     break;
 
   case 323:
-#line 3129 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3129 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " + 
@@ -6404,7 +6404,7 @@
     break;
 
   case 324:
-#line 3137 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3137 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -6422,7 +6422,7 @@
     break;
 
   case 325:
-#line 3151 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3151 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
@@ -6443,7 +6443,7 @@
     break;
 
   case 326:
-#line 3168 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3168 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   Value *TmpVal = getVal((yyvsp[(2) - (5)].TypeVal)->get(), (yyvsp[(3) - (5)].ValIDVal));
   if (!GetResultInst::isValidOperands(TmpVal, (yyvsp[(5) - (5)].UInt64Val)))
@@ -6455,7 +6455,7 @@
     break;
 
   case 327:
-#line 3176 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3176 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
@@ -6689,7 +6689,7 @@
 }
 
 
-#line 3193 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3193 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index d86dbaf..8a37c08 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -350,7 +350,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 949 "/Volumes/LLVM/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 949 "/Users/malichus/Source/LLVM/src/svn/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 90fe540..8c8a3c6 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -2852,7 +2852,7 @@
     CHECK_FOR_ERROR
     Value* val2 = getVal(*$2, $5);
     CHECK_FOR_ERROR
-    $$ = BinaryOperator::create($1, val1, val2);
+    $$ = BinaryOperator::Create($1, val1, val2);
     if ($$ == 0)
       GEN_ERROR("binary operator returned null");
     delete $2;
@@ -2869,7 +2869,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$2, $5);
     CHECK_FOR_ERROR
-    $$ = BinaryOperator::create($1, tmpVal1, tmpVal2);
+    $$ = BinaryOperator::Create($1, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("binary operator returned null");
     delete $2;
@@ -2883,7 +2883,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("icmp operator returned null");
     delete $3;
@@ -2897,7 +2897,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("fcmp operator returned null");
     delete $3;
@@ -2911,7 +2911,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("icmp operator returned null");
     delete $3;
@@ -2925,7 +2925,7 @@
     CHECK_FOR_ERROR
     Value* tmpVal2 = getVal(*$3, $6);
     CHECK_FOR_ERROR
-    $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2);
+    $$ = CmpInst::Create($1, $2, tmpVal1, tmpVal2);
     if ($$ == 0)
       GEN_ERROR("fcmp operator returned null");
     delete $3;
@@ -2939,7 +2939,7 @@
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    $$ = CastInst::create($1, Val, DestTy);
+    $$ = CastInst::Create($1, Val, DestTy);
     delete $4;
   }
   | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
diff --git a/lib/VMCore/Core.cpp b/lib/VMCore/Core.cpp
index 22c77f2..a540f49 100644
--- a/lib/VMCore/Core.cpp
+++ b/lib/VMCore/Core.cpp
@@ -90,11 +90,6 @@
   return static_cast<LLVMTypeKind>(unwrap(Ty)->getTypeID());
 }
 
-void LLVMRefineAbstractType(LLVMTypeRef AbstractType, LLVMTypeRef ConcreteType){
-  DerivedType *Ty = unwrap<DerivedType>(AbstractType);
-  Ty->refineAbstractTypeTo(unwrap(ConcreteType));
-}
-
 /*--.. Operations on integer types .........................................--*/
 
 LLVMTypeRef LLVMInt1Type(void)  { return (LLVMTypeRef) Type::Int1Ty;  }
