From e98dda6d4224beaa5a9049f3287a933dc40ee980 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 14 Jul 2001 06:10:16 +0000 Subject: [PATCH] Added some comments, preparing to add global variables and method prototypes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/llvmAsmParser.cpp | 188 ++++++++++++++++---------------- lib/AsmParser/llvmAsmParser.y | 27 ++++- 2 files changed, 117 insertions(+), 98 deletions(-) diff --git a/lib/AsmParser/llvmAsmParser.cpp b/lib/AsmParser/llvmAsmParser.cpp index a2ffb8fece8..330e8a58acd 100644 --- a/lib/AsmParser/llvmAsmParser.cpp +++ b/lib/AsmParser/llvmAsmParser.cpp @@ -580,15 +580,15 @@ static const short yyrline[] = { 0, 490, 491, 491, 491, 491, 491, 491, 491, 494, 494, 499, 500, 500, 500, 500, 500, 501, 501, 501, 501, 501, 501, 502, 502, 506, 506, 506, 506, 507, 507, - 507, 507, 508, 508, 510, 513, 517, 522, 527, 530, - 533, 539, 542, 555, 559, 577, 584, 592, 606, 609, - 615, 623, 634, 639, 644, 653, 653, 655, 663, 667, - 672, 675, 679, 706, 710, 719, 722, 725, 728, 731, - 736, 739, 742, 749, 757, 762, 766, 769, 772, 777, - 780, 785, 789, 794, 798, 807, 812, 821, 825, 829, - 832, 835, 838, 843, 854, 862, 872, 880, 885, 892, - 896, 902, 902, 904, 909, 914, 918, 921, 932, 969, - 974, 976, 980, 983, 990, 993, 1001, 1007, 1016, 1028 + 507, 507, 508, 508, 511, 514, 521, 526, 531, 534, + 537, 543, 546, 559, 563, 581, 588, 596, 610, 613, + 623, 640, 651, 658, 663, 672, 672, 674, 682, 686, + 691, 694, 698, 725, 729, 738, 741, 744, 747, 750, + 755, 758, 761, 768, 776, 781, 785, 788, 791, 796, + 799, 804, 808, 813, 817, 826, 831, 840, 844, 848, + 851, 854, 857, 862, 873, 881, 891, 899, 904, 911, + 915, 921, 921, 923, 928, 933, 937, 940, 951, 988, + 993, 995, 999, 1002, 1009, 1012, 1020, 1026, 1035, 1047 }; #endif @@ -1391,19 +1391,19 @@ case 4: ; break;} case 45: -#line 510 "llvmAsmParser.y" +#line 511 "llvmAsmParser.y" { yyval.StrVal = yyvsp[-1].StrVal; ; break;} case 46: -#line 513 "llvmAsmParser.y" +#line 514 "llvmAsmParser.y" { yyval.StrVal = 0; ; break;} case 47: -#line 517 "llvmAsmParser.y" +#line 521 "llvmAsmParser.y" { // integral constants if (!ConstPoolSInt::isValueValidForType(yyvsp[-1].TypeVal, yyvsp[0].SInt64Val)) ThrowException("Constant value doesn't fit in type!"); @@ -1411,7 +1411,7 @@ case 47: ; break;} case 48: -#line 522 "llvmAsmParser.y" +#line 526 "llvmAsmParser.y" { // integral constants if (!ConstPoolUInt::isValueValidForType(yyvsp[-1].TypeVal, yyvsp[0].UInt64Val)) ThrowException("Constant value doesn't fit in type!"); @@ -1419,19 +1419,19 @@ case 48: ; break;} case 49: -#line 527 "llvmAsmParser.y" +#line 531 "llvmAsmParser.y" { // Boolean constants yyval.ConstVal = new ConstPoolBool(true); ; break;} case 50: -#line 530 "llvmAsmParser.y" +#line 534 "llvmAsmParser.y" { // Boolean constants yyval.ConstVal = new ConstPoolBool(false); ; break;} case 51: -#line 533 "llvmAsmParser.y" +#line 537 "llvmAsmParser.y" { // String constants cerr << "FIXME: TODO: String constants [sbyte] not implemented yet!\n"; abort(); @@ -1440,13 +1440,13 @@ case 51: ; break;} case 52: -#line 539 "llvmAsmParser.y" +#line 543 "llvmAsmParser.y" { // Type constants yyval.ConstVal = new ConstPoolType(yyvsp[0].TypeVal); ; break;} case 53: -#line 542 "llvmAsmParser.y" +#line 546 "llvmAsmParser.y" { // Nonempty array constant // Verify all elements are correct type! const ArrayType *AT = ArrayType::getArrayType(yyvsp[-4].TypeVal); @@ -1462,14 +1462,14 @@ case 53: ; break;} case 54: -#line 555 "llvmAsmParser.y" +#line 559 "llvmAsmParser.y" { // Empty array constant vector Empty; yyval.ConstVal = new ConstPoolArray(ArrayType::getArrayType(yyvsp[-3].TypeVal), Empty); ; break;} case 55: -#line 559 "llvmAsmParser.y" +#line 563 "llvmAsmParser.y" { // Verify all elements are correct type! const ArrayType *AT = ArrayType::getArrayType(yyvsp[-4].TypeVal, (int)yyvsp[-6].UInt64Val); @@ -1490,7 +1490,7 @@ case 55: ; break;} case 56: -#line 577 "llvmAsmParser.y" +#line 581 "llvmAsmParser.y" { if (yyvsp[-5].UInt64Val != 0) ThrowException("Type mismatch: constant sized array initialized with 0" @@ -1500,7 +1500,7 @@ case 56: ; break;} case 57: -#line 584 "llvmAsmParser.y" +#line 588 "llvmAsmParser.y" { StructType::ElementTypes Types(yyvsp[-4].TypeList->begin(), yyvsp[-4].TypeList->end()); delete yyvsp[-4].TypeList; @@ -1511,7 +1511,7 @@ case 57: ; break;} case 58: -#line 592 "llvmAsmParser.y" +#line 596 "llvmAsmParser.y" { const StructType *St = StructType::getStructType(StructType::ElementTypes()); @@ -1520,20 +1520,20 @@ case 58: ; break;} case 59: -#line 606 "llvmAsmParser.y" +#line 610 "llvmAsmParser.y" { (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(addConstValToConstantPool(yyvsp[0].ConstVal)); ; break;} case 60: -#line 609 "llvmAsmParser.y" +#line 613 "llvmAsmParser.y" { yyval.ConstVector = new vector(); yyval.ConstVector->push_back(addConstValToConstantPool(yyvsp[0].ConstVal)); ; break;} case 61: -#line 615 "llvmAsmParser.y" +#line 623 "llvmAsmParser.y" { if (yyvsp[-1].StrVal) { yyvsp[0].ConstVal->setName(yyvsp[-1].StrVal); @@ -1544,19 +1544,19 @@ case 61: ; break;} case 62: -#line 623 "llvmAsmParser.y" +#line 640 "llvmAsmParser.y" { ; break;} case 63: -#line 634 "llvmAsmParser.y" +#line 651 "llvmAsmParser.y" { yyval.ModuleVal = ParserResult = yyvsp[0].ModuleVal; CurModule.ModuleDone(); ; break;} case 64: -#line 639 "llvmAsmParser.y" +#line 658 "llvmAsmParser.y" { yyvsp[-1].ModuleVal->getMethodList().push_back(yyvsp[0].MethodVal); CurMeth.MethodDone(); @@ -1564,17 +1564,17 @@ case 64: ; break;} case 65: -#line 644 "llvmAsmParser.y" +#line 663 "llvmAsmParser.y" { yyval.ModuleVal = CurModule.CurrentModule; ; break;} case 67: -#line 653 "llvmAsmParser.y" +#line 672 "llvmAsmParser.y" { yyval.StrVal = 0; ; break;} case 68: -#line 655 "llvmAsmParser.y" +#line 674 "llvmAsmParser.y" { yyval.MethArgVal = new MethodArgument(yyvsp[-1].TypeVal); if (yyvsp[0].StrVal) { // Was the argument named? @@ -1584,33 +1584,33 @@ case 68: ; break;} case 69: -#line 663 "llvmAsmParser.y" +#line 682 "llvmAsmParser.y" { yyval.MethodArgList = yyvsp[0].MethodArgList; yyvsp[0].MethodArgList->push_front(yyvsp[-2].MethArgVal); ; break;} case 70: -#line 667 "llvmAsmParser.y" +#line 686 "llvmAsmParser.y" { yyval.MethodArgList = new list(); yyval.MethodArgList->push_front(yyvsp[0].MethArgVal); ; break;} case 71: -#line 672 "llvmAsmParser.y" +#line 691 "llvmAsmParser.y" { yyval.MethodArgList = yyvsp[0].MethodArgList; ; break;} case 72: -#line 675 "llvmAsmParser.y" +#line 694 "llvmAsmParser.y" { yyval.MethodArgList = 0; ; break;} case 73: -#line 679 "llvmAsmParser.y" +#line 698 "llvmAsmParser.y" { MethodType::ParamTypes ParamTypeList; if (yyvsp[-1].MethodArgList) @@ -1639,67 +1639,67 @@ case 73: ; break;} case 74: -#line 706 "llvmAsmParser.y" +#line 725 "llvmAsmParser.y" { yyval.MethodVal = CurMeth.CurrentMethod; ; break;} case 75: -#line 710 "llvmAsmParser.y" +#line 729 "llvmAsmParser.y" { yyval.MethodVal = yyvsp[-1].MethodVal; ; break;} case 76: -#line 719 "llvmAsmParser.y" +#line 738 "llvmAsmParser.y" { // A reference to a direct constant yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val); ; break;} case 77: -#line 722 "llvmAsmParser.y" +#line 741 "llvmAsmParser.y" { yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val); ; break;} case 78: -#line 725 "llvmAsmParser.y" +#line 744 "llvmAsmParser.y" { yyval.ValIDVal = ValID::create((int64_t)1); ; break;} case 79: -#line 728 "llvmAsmParser.y" +#line 747 "llvmAsmParser.y" { yyval.ValIDVal = ValID::create((int64_t)0); ; break;} case 80: -#line 731 "llvmAsmParser.y" +#line 750 "llvmAsmParser.y" { // Quoted strings work too... especially for methods yyval.ValIDVal = ValID::create_conststr(yyvsp[0].StrVal); ; break;} case 81: -#line 736 "llvmAsmParser.y" +#line 755 "llvmAsmParser.y" { // Is it an integer reference...? yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal); ; break;} case 82: -#line 739 "llvmAsmParser.y" +#line 758 "llvmAsmParser.y" { // It must be a named reference then... yyval.ValIDVal = ValID::create(yyvsp[0].StrVal); ; break;} case 83: -#line 742 "llvmAsmParser.y" +#line 761 "llvmAsmParser.y" { yyval.ValIDVal = yyvsp[0].ValIDVal; ; break;} case 84: -#line 749 "llvmAsmParser.y" +#line 768 "llvmAsmParser.y" { Value *D = getVal(Type::TypeTy, yyvsp[0].ValIDVal, true); if (D == 0) ThrowException("Invalid user defined type: " + yyvsp[0].ValIDVal.getName()); @@ -1710,7 +1710,7 @@ case 84: ; break;} case 85: -#line 757 "llvmAsmParser.y" +#line 776 "llvmAsmParser.y" { // Method derived type? MethodType::ParamTypes Params(yyvsp[-1].TypeList->begin(), yyvsp[-1].TypeList->end()); delete yyvsp[-1].TypeList; @@ -1718,26 +1718,26 @@ case 85: ; break;} case 86: -#line 762 "llvmAsmParser.y" +#line 781 "llvmAsmParser.y" { // Method derived type? MethodType::ParamTypes Params; // Empty list yyval.TypeVal = checkNewType(MethodType::getMethodType(yyvsp[-2].TypeVal, Params)); ; break;} case 87: -#line 766 "llvmAsmParser.y" +#line 785 "llvmAsmParser.y" { yyval.TypeVal = checkNewType(ArrayType::getArrayType(yyvsp[-1].TypeVal)); ; break;} case 88: -#line 769 "llvmAsmParser.y" +#line 788 "llvmAsmParser.y" { yyval.TypeVal = checkNewType(ArrayType::getArrayType(yyvsp[-1].TypeVal, (int)yyvsp[-3].UInt64Val)); ; break;} case 89: -#line 772 "llvmAsmParser.y" +#line 791 "llvmAsmParser.y" { StructType::ElementTypes Elements(yyvsp[-1].TypeList->begin(), yyvsp[-1].TypeList->end()); delete yyvsp[-1].TypeList; @@ -1745,46 +1745,46 @@ case 89: ; break;} case 90: -#line 777 "llvmAsmParser.y" +#line 796 "llvmAsmParser.y" { yyval.TypeVal = checkNewType(StructType::getStructType(StructType::ElementTypes())); ; break;} case 91: -#line 780 "llvmAsmParser.y" +#line 799 "llvmAsmParser.y" { yyval.TypeVal = checkNewType(PointerType::getPointerType(yyvsp[-1].TypeVal)); ; break;} case 92: -#line 785 "llvmAsmParser.y" +#line 804 "llvmAsmParser.y" { yyval.TypeList = new list(); yyval.TypeList->push_back(yyvsp[0].TypeVal); ; break;} case 93: -#line 789 "llvmAsmParser.y" +#line 808 "llvmAsmParser.y" { (yyval.TypeList=yyvsp[-2].TypeList)->push_back(yyvsp[0].TypeVal); ; break;} case 94: -#line 794 "llvmAsmParser.y" +#line 813 "llvmAsmParser.y" { yyvsp[-1].MethodVal->getBasicBlocks().push_back(yyvsp[0].BasicBlockVal); yyval.MethodVal = yyvsp[-1].MethodVal; ; break;} case 95: -#line 798 "llvmAsmParser.y" +#line 817 "llvmAsmParser.y" { // Do not allow methods with 0 basic blocks yyval.MethodVal = yyvsp[-1].MethodVal; // in them... yyvsp[-1].MethodVal->getBasicBlocks().push_back(yyvsp[0].BasicBlockVal); ; break;} case 96: -#line 807 "llvmAsmParser.y" +#line 826 "llvmAsmParser.y" { yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal); InsertValue(yyvsp[-1].BasicBlockVal); @@ -1792,7 +1792,7 @@ case 96: ; break;} case 97: -#line 812 "llvmAsmParser.y" +#line 831 "llvmAsmParser.y" { yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal); yyvsp[-1].BasicBlockVal->setName(yyvsp[-2].StrVal); @@ -1803,38 +1803,38 @@ case 97: ; break;} case 98: -#line 821 "llvmAsmParser.y" +#line 840 "llvmAsmParser.y" { yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal); yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal; ; break;} case 99: -#line 825 "llvmAsmParser.y" +#line 844 "llvmAsmParser.y" { yyval.BasicBlockVal = new BasicBlock(); ; break;} case 100: -#line 829 "llvmAsmParser.y" +#line 848 "llvmAsmParser.y" { // Return with a result... yyval.TermInstVal = new ReturnInst(getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); ; break;} case 101: -#line 832 "llvmAsmParser.y" +#line 851 "llvmAsmParser.y" { // Return with no result... yyval.TermInstVal = new ReturnInst(); ; break;} case 102: -#line 835 "llvmAsmParser.y" +#line 854 "llvmAsmParser.y" { // Unconditional Branch... yyval.TermInstVal = new BranchInst((BasicBlock*)getVal(Type::LabelTy, yyvsp[0].ValIDVal)); ; break;} case 103: -#line 838 "llvmAsmParser.y" +#line 857 "llvmAsmParser.y" { yyval.TermInstVal = new BranchInst((BasicBlock*)getVal(Type::LabelTy, yyvsp[-3].ValIDVal), (BasicBlock*)getVal(Type::LabelTy, yyvsp[0].ValIDVal), @@ -1842,7 +1842,7 @@ case 103: ; break;} case 104: -#line 843 "llvmAsmParser.y" +#line 862 "llvmAsmParser.y" { SwitchInst *S = new SwitchInst(getVal(yyvsp[-7].TypeVal, yyvsp[-6].ValIDVal), (BasicBlock*)getVal(Type::LabelTy, yyvsp[-3].ValIDVal)); @@ -1855,7 +1855,7 @@ case 104: ; break;} case 105: -#line 854 "llvmAsmParser.y" +#line 873 "llvmAsmParser.y" { yyval.JumpTable = yyvsp[-5].JumpTable; ConstPoolVal *V = (ConstPoolVal*)getVal(yyvsp[-4].TypeVal, yyvsp[-3].ValIDVal, true); @@ -1866,7 +1866,7 @@ case 105: ; break;} case 106: -#line 862 "llvmAsmParser.y" +#line 881 "llvmAsmParser.y" { yyval.JumpTable = new list >(); ConstPoolVal *V = (ConstPoolVal*)getVal(yyvsp[-4].TypeVal, yyvsp[-3].ValIDVal, true); @@ -1878,7 +1878,7 @@ case 106: ; break;} case 107: -#line 872 "llvmAsmParser.y" +#line 891 "llvmAsmParser.y" { if (yyvsp[-1].StrVal) // Is this definition named?? yyvsp[0].InstVal->setName(yyvsp[-1].StrVal); // if so, assign the name... @@ -1888,7 +1888,7 @@ case 107: ; break;} case 108: -#line 880 "llvmAsmParser.y" +#line 899 "llvmAsmParser.y" { // Used for PHI nodes yyval.PHIList = new list >(); yyval.PHIList->push_back(make_pair(getVal(yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal), @@ -1896,7 +1896,7 @@ case 108: ; break;} case 109: -#line 885 "llvmAsmParser.y" +#line 904 "llvmAsmParser.y" { yyval.PHIList = yyvsp[-6].PHIList; yyvsp[-6].PHIList->push_back(make_pair(getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal), @@ -1904,25 +1904,25 @@ case 109: ; break;} case 110: -#line 892 "llvmAsmParser.y" +#line 911 "llvmAsmParser.y" { // Used for call statements... yyval.ValueList = new list(); yyval.ValueList->push_back(getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); ; break;} case 111: -#line 896 "llvmAsmParser.y" +#line 915 "llvmAsmParser.y" { yyval.ValueList = yyvsp[-3].ValueList; yyvsp[-3].ValueList->push_back(getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); ; break;} case 113: -#line 902 "llvmAsmParser.y" +#line 921 "llvmAsmParser.y" { yyval.ValueList = 0; ; break;} case 114: -#line 904 "llvmAsmParser.y" +#line 923 "llvmAsmParser.y" { yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, getVal(yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal), getVal(yyvsp[-3].TypeVal, yyvsp[0].ValIDVal)); if (yyval.InstVal == 0) @@ -1930,7 +1930,7 @@ case 114: ; break;} case 115: -#line 909 "llvmAsmParser.y" +#line 928 "llvmAsmParser.y" { yyval.InstVal = UnaryOperator::create(yyvsp[-2].UnaryOpVal, getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); if (yyval.InstVal == 0) @@ -1938,20 +1938,20 @@ case 115: ; break;} case 116: -#line 914 "llvmAsmParser.y" +#line 933 "llvmAsmParser.y" { if (yyvsp[-1].TypeVal != Type::UByteTy) ThrowException("Shift amount must be ubyte!"); yyval.InstVal = new ShiftInst(yyvsp[-5].OtherOpVal, getVal(yyvsp[-4].TypeVal, yyvsp[-3].ValIDVal), getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); ; break;} case 117: -#line 918 "llvmAsmParser.y" +#line 937 "llvmAsmParser.y" { yyval.InstVal = new CastInst(getVal(yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal), yyvsp[0].TypeVal); ; break;} case 118: -#line 921 "llvmAsmParser.y" +#line 940 "llvmAsmParser.y" { const Type *Ty = yyvsp[0].PHIList->front().first->getType(); yyval.InstVal = new PHINode(Ty); @@ -1965,7 +1965,7 @@ case 118: ; break;} case 119: -#line 932 "llvmAsmParser.y" +#line 951 "llvmAsmParser.y" { if (!yyvsp[-4].TypeVal->isMethodType()) ThrowException("Can only call methods: invalid type '" + @@ -2005,31 +2005,31 @@ case 119: ; break;} case 120: -#line 969 "llvmAsmParser.y" +#line 988 "llvmAsmParser.y" { yyval.InstVal = yyvsp[0].InstVal; ; break;} case 121: -#line 974 "llvmAsmParser.y" +#line 993 "llvmAsmParser.y" { yyval.ConstVector = yyvsp[0].ConstVector; ; break;} case 122: -#line 976 "llvmAsmParser.y" +#line 995 "llvmAsmParser.y" { yyval.ConstVector = new vector(); ; break;} case 123: -#line 980 "llvmAsmParser.y" +#line 999 "llvmAsmParser.y" { yyval.InstVal = new MallocInst(checkNewType(PointerType::getPointerType(yyvsp[0].TypeVal))); ; break;} case 124: -#line 983 "llvmAsmParser.y" +#line 1002 "llvmAsmParser.y" { if (!yyvsp[-3].TypeVal->isArrayType() || ((const ArrayType*)yyvsp[-3].TypeVal)->isSized()) ThrowException("Trying to allocate " + yyvsp[-3].TypeVal->getName() + @@ -2039,13 +2039,13 @@ case 124: ; break;} case 125: -#line 990 "llvmAsmParser.y" +#line 1009 "llvmAsmParser.y" { yyval.InstVal = new AllocaInst(checkNewType(PointerType::getPointerType(yyvsp[0].TypeVal))); ; break;} case 126: -#line 993 "llvmAsmParser.y" +#line 1012 "llvmAsmParser.y" { if (!yyvsp[-3].TypeVal->isArrayType() || ((const ArrayType*)yyvsp[-3].TypeVal)->isSized()) ThrowException("Trying to allocate " + yyvsp[-3].TypeVal->getName() + @@ -2056,7 +2056,7 @@ case 126: ; break;} case 127: -#line 1001 "llvmAsmParser.y" +#line 1020 "llvmAsmParser.y" { if (!yyvsp[-1].TypeVal->isPointerType()) ThrowException("Trying to free nonpointer type " + yyvsp[-1].TypeVal->getName() + "!"); @@ -2064,7 +2064,7 @@ case 127: ; break;} case 128: -#line 1007 "llvmAsmParser.y" +#line 1026 "llvmAsmParser.y" { if (!yyvsp[-2].TypeVal->isPointerType()) ThrowException("Can't load from nonpointer type: " + yyvsp[-2].TypeVal->getName()); @@ -2076,7 +2076,7 @@ case 128: ; break;} case 129: -#line 1016 "llvmAsmParser.y" +#line 1035 "llvmAsmParser.y" { if (!yyvsp[-2].TypeVal->isPointerType()) ThrowException("Can't store to a nonpointer type: " + yyvsp[-2].TypeVal->getName()); @@ -2091,7 +2091,7 @@ case 129: ; break;} case 130: -#line 1028 "llvmAsmParser.y" +#line 1047 "llvmAsmParser.y" { if (!yyvsp[-2].TypeVal->isPointerType()) ThrowException("getelementptr insn requires pointer operand!"); @@ -2324,7 +2324,7 @@ yyerrhandle: } return 1; } -#line 1038 "llvmAsmParser.y" +#line 1057 "llvmAsmParser.y" int yyerror(const char *ErrorMsg) { ThrowException(string("Parse error: ") + ErrorMsg); diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index a70e873cf46..e5534cda76b 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -485,7 +485,7 @@ EINT64VAL : EUINT64VAL { // Types includes all predefined types... except void, because you can't do // anything with it except for certain specific things... // -// User defined types are added latter... +// User defined types are added later... // Types : BOOL | SBYTE | UBYTE | SHORT | USHORT | INT | UINT Types : LONG | ULONG | FLOAT | DOUBLE | STRING | TYPE | LABEL @@ -501,12 +501,13 @@ BinaryOps : ADD | SUB | MUL | DIV | REM BinaryOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE ShiftOps : SHL | SHR -// Valueine some types that allow classification if we only want a particular -// thing... +// These are some types that allow classification if we only want a particular +// thing... for example, only a signed, unsigned, or integral type. SIntType : LONG | INT | SHORT | SBYTE UIntType : ULONG | UINT | USHORT | UBYTE IntType : SIntType | UIntType +// OptAssign - Value producing statements have an optional assignment component OptAssign : VAR_ID '=' { $$ = $1; } @@ -514,6 +515,9 @@ OptAssign : VAR_ID '=' { $$ = 0; } +// ConstVal - The various declarations that go into the constant pool. This +// includes all forward declarations of types, constants, and functions. +// ConstVal : SIntType EINT64VAL { // integral constants if (!ConstPoolSInt::isValueValidForType($1, $2)) ThrowException("Constant value doesn't fit in type!"); @@ -602,7 +606,7 @@ ConstVal : SIntType EINT64VAL { // integral constants } */ - +// ConstVector - A list of comma seperated constants. ConstVector : ConstVector ',' ConstVal { ($$ = $1)->push_back(addConstValToConstantPool($3)); } @@ -611,7 +615,11 @@ ConstVector : ConstVector ',' ConstVal { $$->push_back(addConstValToConstantPool($1)); } +//ExternMethodDecl : EXTERNAL TypesV '(' TypeList ')' { +// } +//ExternVarDecl : +// ConstPool - Constants with optional names assigned to them. ConstPool : ConstPool OptAssign ConstVal { if ($2) { $3->setName($2); @@ -620,6 +628,15 @@ ConstPool : ConstPool OptAssign ConstVal { addConstValToConstantPool($3); } +/* + | ConstPool OptAssign GlobalDecl { // Global declarations appear in CP + if ($2) { + $3->setName($2); + free($2); + } + //CurModule.CurrentModule-> + } +*/ | /* empty: end of list */ { } @@ -636,6 +653,8 @@ Module : MethodList { CurModule.ModuleDone(); } +// MethodList - A list of methods, preceeded by a constant pool. +// MethodList : MethodList Method { $1->getMethodList().push_back($2); CurMeth.MethodDone();