From f5da13367f88f06e3b585dc2263ab6e9ca6c4bf8 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Thu, 7 Dec 2006 22:21:48 +0000 Subject: [PATCH] What should be the last unnecessary s in the library. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32333 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMAsmPrinter.cpp | 1 - lib/Target/ARM/ARMISelDAGToDAG.cpp | 1 - lib/Target/ARM/ARMRegisterInfo.cpp | 1 - lib/Target/Alpha/AlphaAsmPrinter.cpp | 9 +- lib/Target/Alpha/AlphaCodeEmitter.cpp | 5 +- lib/Target/Alpha/AlphaISelDAGToDAG.cpp | 3 +- lib/Target/Alpha/AlphaISelLowering.cpp | 4 +- lib/Target/Alpha/AlphaInstrInfo.cpp | 1 - lib/Target/Alpha/AlphaJITInfo.cpp | 37 +- lib/Target/Alpha/AlphaRegisterInfo.cpp | 33 +- lib/Target/CBackend/CBackend.cpp | 20 +- lib/Target/CBackend/Writer.cpp | 20 +- lib/Target/IA64/IA64AsmPrinter.cpp | 7 +- lib/Target/IA64/IA64Bundling.cpp | 1 - lib/Target/IA64/IA64ISelDAGToDAG.cpp | 1 - lib/Target/IA64/IA64RegisterInfo.cpp | 2 - lib/Target/PowerPC/PPCAsmPrinter.cpp | 5 +- lib/Target/PowerPC/PPCCodeEmitter.cpp | 3 +- lib/Target/PowerPC/PPCHazardRecognizers.cpp | 4 +- lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 1 - lib/Target/PowerPC/PPCInstrInfo.cpp | 1 - lib/Target/PowerPC/PPCJITInfo.cpp | 1 - lib/Target/PowerPC/PPCRegisterInfo.cpp | 5 +- lib/Target/PowerPC/PPCSubtarget.cpp | 9 +- lib/Target/Sparc/FPMover.cpp | 5 +- lib/Target/Sparc/SparcAsmPrinter.cpp | 7 +- lib/Target/Sparc/SparcISelDAGToDAG.cpp | 1 - lib/Target/Sparc/SparcRegisterInfo.cpp | 1 - lib/Target/Sparc/SparcTargetMachine.cpp | 1 - lib/Target/SubtargetFeature.cpp | 52 +- lib/Target/X86/X86FloatingPoint.cpp | 17 +- lib/Target/X86/X86ISelDAGToDAG.cpp | 1 - lib/Target/X86/X86RegisterInfo.cpp | 10 +- lib/Target/X86/X86Subtarget.cpp | 7 +- lib/Transforms/IPO/FunctionResolution.cpp | 11 +- utils/TableGen/AsmWriterEmitter.cpp | 5 +- utils/TableGen/CodeEmitterGen.cpp | 2 +- utils/TableGen/CodeGenTarget.cpp | 5 +- utils/TableGen/DAGISelEmitter.cpp | 89 +- utils/TableGen/FileLexer.cpp.cvs | 106 +- utils/TableGen/FileLexer.l | 20 +- utils/TableGen/FileLexer.l.cvs | 20 +- utils/TableGen/FileParser.cpp.cvs | 3636 +++++++++++-------- utils/TableGen/FileParser.h.cvs | 133 +- utils/TableGen/FileParser.y | 3 +- utils/TableGen/FileParser.y.cvs | 3 +- utils/TableGen/InstrInfoEmitter.cpp | 4 +- utils/TableGen/Record.cpp | 13 +- utils/TableGen/Record.h | 2 +- utils/TableGen/RegisterInfoEmitter.cpp | 13 +- utils/TableGen/TableGen.cpp | 15 +- utils/TableGen/TableGenBackend.cpp | 1 - 52 files changed, 2591 insertions(+), 1767 deletions(-) diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index b85cfa29c59..e57a7685077 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -31,7 +31,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/MathExtras.h" #include -#include using namespace llvm; namespace { diff --git a/lib/Target/ARM/ARMISelDAGToDAG.cpp b/lib/Target/ARM/ARMISelDAGToDAG.cpp index cf02b8b3e4a..08864a7b6de 100644 --- a/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -27,7 +27,6 @@ #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/TargetLowering.h" #include "llvm/Support/Debug.h" -#include #include using namespace llvm; diff --git a/lib/Target/ARM/ARMRegisterInfo.cpp b/lib/Target/ARM/ARMRegisterInfo.cpp index 09c8b1f5d03..027b1939223 100644 --- a/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/lib/Target/ARM/ARMRegisterInfo.cpp @@ -24,7 +24,6 @@ #include "llvm/Target/TargetOptions.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/ADT/STLExtras.h" -#include using namespace llvm; // hasFP - Return true if the specified function should have a dedicated frame diff --git a/lib/Target/Alpha/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AlphaAsmPrinter.cpp index f4540dbe8f7..4b71ab52920 100644 --- a/lib/Target/Alpha/AlphaAsmPrinter.cpp +++ b/lib/Target/Alpha/AlphaAsmPrinter.cpp @@ -24,7 +24,6 @@ #include "llvm/Support/Compiler.h" #include "llvm/Support/Mangler.h" #include "llvm/ADT/Statistic.h" -#include using namespace llvm; namespace { @@ -105,7 +104,7 @@ void AlphaAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) { return; case MachineOperand::MO_Immediate: - std::cerr << "printOp() does not handle immediate values\n"; + cerr << "printOp() does not handle immediate values\n"; abort(); return; @@ -265,13 +264,13 @@ bool AlphaAsmPrinter::doFinalization(Module &M) { "\t.section .data", I); break; case GlobalValue::GhostLinkage: - std::cerr << "GhostLinkage cannot appear in AlphaAsmPrinter!\n"; + cerr << "GhostLinkage cannot appear in AlphaAsmPrinter!\n"; abort(); case GlobalValue::DLLImportLinkage: - std::cerr << "DLLImport linkage is not supported by this target!\n"; + cerr << "DLLImport linkage is not supported by this target!\n"; abort(); case GlobalValue::DLLExportLinkage: - std::cerr << "DLLExport linkage is not supported by this target!\n"; + cerr << "DLLExport linkage is not supported by this target!\n"; abort(); default: assert(0 && "Unknown linkage type!"); diff --git a/lib/Target/Alpha/AlphaCodeEmitter.cpp b/lib/Target/Alpha/AlphaCodeEmitter.cpp index 884215e7930..6f5bc70f058 100644 --- a/lib/Target/Alpha/AlphaCodeEmitter.cpp +++ b/lib/Target/Alpha/AlphaCodeEmitter.cpp @@ -23,7 +23,6 @@ #include "llvm/Function.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/Statistic.h" -#include using namespace llvm; namespace { @@ -158,7 +157,7 @@ int AlphaCodeEmitter::getMachineOpValue(MachineInstr &MI, MachineOperand &MO) { rv = MO.getImmedValue(); } else if (MO.isGlobalAddress() || MO.isExternalSymbol() || MO.isConstantPoolIndex()) { - DEBUG(std::cerr << MO << " is a relocated op for " << MI << "\n";); + DOUT << MO << " is a relocated op for " << MI << "\n"; unsigned Reloc = 0; int Offset = 0; bool useGOT = false; @@ -214,7 +213,7 @@ int AlphaCodeEmitter::getMachineOpValue(MachineInstr &MI, MachineOperand &MO) { Alpha::reloc_bsr, MO.getMachineBasicBlock())); }else { - std::cerr << "ERROR: Unknown type of MachineOperand: " << MO << "\n"; + cerr << "ERROR: Unknown type of MachineOperand: " << MO << "\n"; abort(); } diff --git a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp index 521e661dc0f..fc752aa31f6 100644 --- a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp +++ b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp @@ -29,7 +29,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include -#include #include #include using namespace llvm; @@ -115,7 +114,7 @@ namespace { unsigned at = CountLeadingZeros_64(x); uint64_t complow = 1 << (63 - at); uint64_t comphigh = 1 << (64 - at); - //std::cerr << x << ":" << complow << ":" << comphigh << "\n"; + //cerr << x << ":" << complow << ":" << comphigh << "\n"; if (abs(complow - x) <= abs(comphigh - x)) return complow; else diff --git a/lib/Target/Alpha/AlphaISelLowering.cpp b/lib/Target/Alpha/AlphaISelLowering.cpp index 6d53a9e59c4..3ea4e88ac4b 100644 --- a/lib/Target/Alpha/AlphaISelLowering.cpp +++ b/lib/Target/Alpha/AlphaISelLowering.cpp @@ -22,8 +22,6 @@ #include "llvm/Function.h" #include "llvm/Module.h" #include "llvm/Support/CommandLine.h" -#include - using namespace llvm; /// AddLiveIn - This helper function adds the specified physical register to the @@ -224,7 +222,7 @@ static SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG, if (ArgNo < 6) { switch (ObjectVT) { default: - std::cerr << "Unknown Type " << ObjectVT << "\n"; + cerr << "Unknown Type " << ObjectVT << "\n"; abort(); case MVT::f64: args_float[ArgNo] = AddLiveIn(MF, args_float[ArgNo], diff --git a/lib/Target/Alpha/AlphaInstrInfo.cpp b/lib/Target/Alpha/AlphaInstrInfo.cpp index 4ac352b674f..71bf5b0e962 100644 --- a/lib/Target/Alpha/AlphaInstrInfo.cpp +++ b/lib/Target/Alpha/AlphaInstrInfo.cpp @@ -15,7 +15,6 @@ #include "AlphaInstrInfo.h" #include "AlphaGenInstrInfo.inc" #include "llvm/CodeGen/MachineInstrBuilder.h" -#include using namespace llvm; AlphaInstrInfo::AlphaInstrInfo() diff --git a/lib/Target/Alpha/AlphaJITInfo.cpp b/lib/Target/Alpha/AlphaJITInfo.cpp index 81f5e743aa2..669a2d56027 100644 --- a/lib/Target/Alpha/AlphaJITInfo.cpp +++ b/lib/Target/Alpha/AlphaJITInfo.cpp @@ -18,7 +18,6 @@ #include "llvm/Config/alloca.h" #include "llvm/Support/Debug.h" #include -#include #include using namespace llvm; @@ -58,12 +57,12 @@ static void EmitBranchToAt(void *At, void *To) { AtI[0] = BUILD_OR(0, 27, 27); - DEBUG(std::cerr << "Stub targeting " << To << "\n"); + DOUT << "Stub targeting " << To << "\n"; for (int x = 1; x <= 8; ++x) { AtI[2*x - 1] = BUILD_SLLi(27,27,8); unsigned d = (Fn >> (64 - 8 * x)) & 0x00FF; - // DEBUG(std::cerr << "outputing " << hex << d << dec << "\n"); + //DOUT << "outputing " << hex << d << dec << "\n"; AtI[2*x] = BUILD_ORi(27, 27, d); } AtI[17] = BUILD_JMP(31,27,0); //jump, preserving ra, and setting pv @@ -87,12 +86,12 @@ extern "C" { //rewrite the stub to an unconditional branch if (((unsigned*)CameFromStub)[18] == 0x00FFFFFF) { - DEBUG(std::cerr << "Came from a stub, rewriting\n"); + DOUT << "Came from a stub, rewriting\n"; EmitBranchToAt(CameFromStub, Target); } else { - DEBUG(std::cerr << "confused, didn't come from stub at " << CameFromStub - << " old jump vector " << oldpv - << " new jump vector " << Target << "\n"); + DOUT << "confused, didn't come from stub at " << CameFromStub + << " old jump vector " << oldpv + << " new jump vector " << Target << "\n"; } //Change pv to new Target @@ -185,7 +184,7 @@ extern "C" { ); #else void AlphaCompilationCallback() { - std::cerr << "Cannot call AlphaCompilationCallback() on a non-Alpha arch!\n"; + cerr << "Cannot call AlphaCompilationCallback() on a non-Alpha arch!\n"; abort(); } #endif @@ -199,7 +198,7 @@ void *AlphaJITInfo::emitFunctionStub(void *Fn, MachineCodeEmitter &MCE) { for (int x = 0; x < 19; ++ x) MCE.emitWordLE(0); EmitBranchToAt(Addr, Fn); - DEBUG(std::cerr << "Emitting Stub to " << Fn << " at [" << Addr << "]\n"); + DOUT << "Emitting Stub to " << Fn << " at [" << Addr << "]\n"; return MCE.finishFunctionStub(0); } @@ -250,30 +249,30 @@ void AlphaJITInfo::relocate(void *Function, MachineRelocation *MR, case Alpha::reloc_literal: //This is a LDQl idx = MR->getGOTIndex(); - DEBUG(std::cerr << "Literal relocation to slot " << idx); + DOUT << "Literal relocation to slot " << idx; idx = (idx - GOToffset) * 8; - DEBUG(std::cerr << " offset " << idx << "\n"); + DOUT << " offset " << idx << "\n"; break; case Alpha::reloc_gprellow: idx = (unsigned char*)MR->getResultPointer() - &GOTBase[GOToffset * 8]; idx = getLower16(idx); - DEBUG(std::cerr << "gprellow relocation offset " << idx << "\n"); - DEBUG(std::cerr << " Pointer is " << (void*)MR->getResultPointer() - << " GOT is " << (void*)&GOTBase[GOToffset * 8] << "\n"); + DOUT << "gprellow relocation offset " << idx << "\n"; + DOUT << " Pointer is " << (void*)MR->getResultPointer() + << " GOT is " << (void*)&GOTBase[GOToffset * 8] << "\n"; break; case Alpha::reloc_gprelhigh: idx = (unsigned char*)MR->getResultPointer() - &GOTBase[GOToffset * 8]; idx = getUpper16(idx); - DEBUG(std::cerr << "gprelhigh relocation offset " << idx << "\n"); - DEBUG(std::cerr << " Pointer is " << (void*)MR->getResultPointer() - << " GOT is " << (void*)&GOTBase[GOToffset * 8] << "\n"); + DOUT << "gprelhigh relocation offset " << idx << "\n"; + DOUT << " Pointer is " << (void*)MR->getResultPointer() + << " GOT is " << (void*)&GOTBase[GOToffset * 8] << "\n"; break; case Alpha::reloc_gpdist: switch (*RelocPos >> 26) { case 0x09: //LDAH idx = &GOTBase[GOToffset * 8] - (unsigned char*)RelocPos; idx = getUpper16(idx); - DEBUG(std::cerr << "LDAH: " << idx << "\n"); + DOUT << "LDAH: " << idx << "\n"; //add the relocation to the map gpdistmap[std::make_pair(Function, MR->getConstantVal())] = RelocPos; break; @@ -283,7 +282,7 @@ void AlphaJITInfo::relocate(void *Function, MachineRelocation *MR, idx = &GOTBase[GOToffset * 8] - (unsigned char*)gpdistmap[std::make_pair(Function, MR->getConstantVal())]; idx = getLower16(idx); - DEBUG(std::cerr << "LDA: " << idx << "\n"); + DOUT << "LDA: " << idx << "\n"; break; default: assert(0 && "Cannot handle gpdist yet"); diff --git a/lib/Target/Alpha/AlphaRegisterInfo.cpp b/lib/Target/Alpha/AlphaRegisterInfo.cpp index 02d15703b78..bafd3b3229e 100644 --- a/lib/Target/Alpha/AlphaRegisterInfo.cpp +++ b/lib/Target/Alpha/AlphaRegisterInfo.cpp @@ -30,7 +30,6 @@ #include "llvm/Support/Debug.h" #include "llvm/ADT/STLExtras.h" #include -#include using namespace llvm; //These describe LDAx @@ -63,8 +62,8 @@ AlphaRegisterInfo::storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, int FrameIdx, const TargetRegisterClass *RC) const { - //std::cerr << "Trying to store " << getPrettyName(SrcReg) << " to " - //<< FrameIdx << "\n"; + //cerr << "Trying to store " << getPrettyName(SrcReg) << " to " + // << FrameIdx << "\n"; //BuildMI(MBB, MI, Alpha::WTF, 0).addReg(SrcReg); if (RC == Alpha::F4RCRegisterClass) BuildMI(MBB, MI, TII.get(Alpha::STS)) @@ -84,8 +83,8 @@ AlphaRegisterInfo::loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, int FrameIdx, const TargetRegisterClass *RC) const { - //std::cerr << "Trying to load " << getPrettyName(DestReg) << " to " - //<< FrameIdx << "\n"; + //cerr << "Trying to load " << getPrettyName(DestReg) << " to " + // << FrameIdx << "\n"; if (RC == Alpha::F4RCRegisterClass) BuildMI(MBB, MI, TII.get(Alpha::LDS), DestReg) .addFrameIndex(FrameIdx).addReg(Alpha::F31); @@ -139,7 +138,7 @@ void AlphaRegisterInfo::copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, unsigned SrcReg, const TargetRegisterClass *RC) const { - // std::cerr << "copyRegToReg " << DestReg << " <- " << SrcReg << "\n"; + //cerr << "copyRegToReg " << DestReg << " <- " << SrcReg << "\n"; if (RC == Alpha::GPRCRegisterClass) { BuildMI(MBB, MI, TII.get(Alpha::BISr), DestReg).addReg(SrcReg).addReg(SrcReg); } else if (RC == Alpha::F4RCRegisterClass) { @@ -147,8 +146,8 @@ void AlphaRegisterInfo::copyRegToReg(MachineBasicBlock &MBB, } else if (RC == Alpha::F8RCRegisterClass) { BuildMI(MBB, MI, TII.get(Alpha::CPYST), DestReg).addReg(SrcReg).addReg(SrcReg); } else { - std::cerr << "Attempt to copy register that is not GPR or FPR"; - abort(); + cerr << "Attempt to copy register that is not GPR or FPR"; + abort(); } } @@ -255,16 +254,16 @@ AlphaRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II) const { // Now add the frame object offset to the offset from the virtual frame index. int Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex); - DEBUG(std::cerr << "FI: " << FrameIndex << " Offset: " << Offset << "\n"); + DOUT << "FI: " << FrameIndex << " Offset: " << Offset << "\n"; Offset += MF.getFrameInfo()->getStackSize(); - DEBUG(std::cerr << "Corrected Offset " << Offset << - " for stack size: " << MF.getFrameInfo()->getStackSize() << "\n"); + DOUT << "Corrected Offset " << Offset + << " for stack size: " << MF.getFrameInfo()->getStackSize() << "\n"; if (Offset > IMM_HIGH || Offset < IMM_LOW) { - DEBUG(std::cerr << "Unconditionally using R28 for evil purposes Offset: " - << Offset << "\n"); + DOUT << "Unconditionally using R28 for evil purposes Offset: " + << Offset << "\n"; //so in this case, we need to use a temporary register, and move the //original inst off the SP/FP //fix up the old: @@ -309,8 +308,8 @@ void AlphaRegisterInfo::emitPrologue(MachineFunction &MF) const { // brackets around call sites. //If there is a frame pointer, then we don't do this NumBytes += MFI->getMaxCallFrameSize(); - DEBUG(std::cerr << "Added " << MFI->getMaxCallFrameSize() - << " to the stack due to calls\n"); + DOUT << "Added " << MFI->getMaxCallFrameSize() + << " to the stack due to calls\n"; } if (FP) @@ -336,7 +335,7 @@ void AlphaRegisterInfo::emitPrologue(MachineFunction &MF) const { BuildMI(MBB, MBBI, TII.get(Alpha::LDA), Alpha::R30).addImm(getLower16(NumBytes)) .addReg(Alpha::R30); } else { - std::cerr << "Too big a stack frame at " << NumBytes << "\n"; + cerr << "Too big a stack frame at " << NumBytes << "\n"; abort(); } @@ -386,7 +385,7 @@ void AlphaRegisterInfo::emitEpilogue(MachineFunction &MF, BuildMI(MBB, MBBI, TII.get(Alpha::LDA), Alpha::R30) .addImm(getLower16(NumBytes)).addReg(Alpha::R30); } else { - std::cerr << "Too big a stack frame at " << NumBytes << "\n"; + cerr << "Too big a stack frame at " << NumBytes << "\n"; abort(); } } diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index d8fe0e83500..7c0d433676d 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -42,9 +42,7 @@ #include "llvm/Support/MathExtras.h" #include "llvm/Config/config.h" #include -#include #include -#include using namespace llvm; namespace { @@ -229,7 +227,7 @@ namespace { void visitVAArgInst (VAArgInst &I); void visitInstruction(Instruction &I) { - std::cerr << "C Writer does not know about " << I; + cerr << "C Writer does not know about " << I; abort(); } @@ -375,7 +373,7 @@ std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty, case Type::FloatTyID: return Out << "float " << NameSoFar; case Type::DoubleTyID: return Out << "double " << NameSoFar; default : - std::cerr << "Unknown primitive type: " << *Ty << "\n"; + cerr << "Unknown primitive type: " << *Ty << "\n"; abort(); } @@ -726,8 +724,8 @@ void CWriter::printConstant(Constant *CPV) { } default: - std::cerr << "CWriter Error: Unhandled constant expression: " - << *CE << "\n"; + cerr << "CWriter Error: Unhandled constant expression: " + << *CE << "\n"; abort(); } } else if (isa(CPV) && CPV->getType()->isFirstClassType()) { @@ -901,7 +899,7 @@ void CWriter::printConstant(Constant *CPV) { } // FALL THROUGH default: - std::cerr << "Unknown constant type: " << *CPV << "\n"; + cerr << "Unknown constant type: " << *CPV << "\n"; abort(); } } @@ -1973,7 +1971,7 @@ void CWriter::visitBinaryOperator(Instruction &I) { case Instruction::Shl : Out << " << "; break; case Instruction::LShr: case Instruction::AShr: Out << " >> "; break; - default: std::cerr << "Invalid operator type!" << I; abort(); + default: cerr << "Invalid operator type!" << I; abort(); } writeOperandWithCast(I.getOperand(1), I.getOpcode()); @@ -2099,9 +2097,9 @@ void CWriter::visitCallInst(CallInst &I) { Out << ", "; // Output the last argument to the enclosing function... if (I.getParent()->getParent()->arg_empty()) { - std::cerr << "The C backend does not currently support zero " - << "argument varargs functions, such as '" - << I.getParent()->getParent()->getName() << "'!\n"; + cerr << "The C backend does not currently support zero " + << "argument varargs functions, such as '" + << I.getParent()->getParent()->getName() << "'!\n"; abort(); } writeOperand(--I.getParent()->getParent()->arg_end()); diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index d8fe0e83500..7c0d433676d 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -42,9 +42,7 @@ #include "llvm/Support/MathExtras.h" #include "llvm/Config/config.h" #include -#include #include -#include using namespace llvm; namespace { @@ -229,7 +227,7 @@ namespace { void visitVAArgInst (VAArgInst &I); void visitInstruction(Instruction &I) { - std::cerr << "C Writer does not know about " << I; + cerr << "C Writer does not know about " << I; abort(); } @@ -375,7 +373,7 @@ std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty, case Type::FloatTyID: return Out << "float " << NameSoFar; case Type::DoubleTyID: return Out << "double " << NameSoFar; default : - std::cerr << "Unknown primitive type: " << *Ty << "\n"; + cerr << "Unknown primitive type: " << *Ty << "\n"; abort(); } @@ -726,8 +724,8 @@ void CWriter::printConstant(Constant *CPV) { } default: - std::cerr << "CWriter Error: Unhandled constant expression: " - << *CE << "\n"; + cerr << "CWriter Error: Unhandled constant expression: " + << *CE << "\n"; abort(); } } else if (isa(CPV) && CPV->getType()->isFirstClassType()) { @@ -901,7 +899,7 @@ void CWriter::printConstant(Constant *CPV) { } // FALL THROUGH default: - std::cerr << "Unknown constant type: " << *CPV << "\n"; + cerr << "Unknown constant type: " << *CPV << "\n"; abort(); } } @@ -1973,7 +1971,7 @@ void CWriter::visitBinaryOperator(Instruction &I) { case Instruction::Shl : Out << " << "; break; case Instruction::LShr: case Instruction::AShr: Out << " >> "; break; - default: std::cerr << "Invalid operator type!" << I; abort(); + default: cerr << "Invalid operator type!" << I; abort(); } writeOperandWithCast(I.getOperand(1), I.getOpcode()); @@ -2099,9 +2097,9 @@ void CWriter::visitCallInst(CallInst &I) { Out << ", "; // Output the last argument to the enclosing function... if (I.getParent()->getParent()->arg_empty()) { - std::cerr << "The C backend does not currently support zero " - << "argument varargs functions, such as '" - << I.getParent()->getParent()->getName() << "'!\n"; + cerr << "The C backend does not currently support zero " + << "argument varargs functions, such as '" + << I.getParent()->getParent()->getName() << "'!\n"; abort(); } writeOperand(--I.getParent()->getParent()->arg_end()); diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp index b2f0f530975..6915cbc5d95 100644 --- a/lib/Target/IA64/IA64AsmPrinter.cpp +++ b/lib/Target/IA64/IA64AsmPrinter.cpp @@ -26,7 +26,6 @@ #include "llvm/Target/TargetMachine.h" #include "llvm/Support/Mangler.h" #include "llvm/ADT/Statistic.h" -#include using namespace llvm; namespace { @@ -308,13 +307,13 @@ bool IA64AsmPrinter::doFinalization(Module &M) { SwitchToDataSection(C->isNullValue() ? ".bss" : ".data", I); break; case GlobalValue::GhostLinkage: - std::cerr << "GhostLinkage cannot appear in IA64AsmPrinter!\n"; + cerr << "GhostLinkage cannot appear in IA64AsmPrinter!\n"; abort(); case GlobalValue::DLLImportLinkage: - std::cerr << "DLLImport linkage is not supported by this target!\n"; + cerr << "DLLImport linkage is not supported by this target!\n"; abort(); case GlobalValue::DLLExportLinkage: - std::cerr << "DLLExport linkage is not supported by this target!\n"; + cerr << "DLLExport linkage is not supported by this target!\n"; abort(); default: assert(0 && "Unknown linkage type!"); diff --git a/lib/Target/IA64/IA64Bundling.cpp b/lib/Target/IA64/IA64Bundling.cpp index 0c4ae82529b..9b5e4c741e4 100644 --- a/lib/Target/IA64/IA64Bundling.cpp +++ b/lib/Target/IA64/IA64Bundling.cpp @@ -29,7 +29,6 @@ #include "llvm/ADT/Statistic.h" #include "llvm/Support/Debug.h" #include -#include using namespace llvm; namespace { diff --git a/lib/Target/IA64/IA64ISelDAGToDAG.cpp b/lib/Target/IA64/IA64ISelDAGToDAG.cpp index 3f2669d52e0..7a49418de64 100644 --- a/lib/Target/IA64/IA64ISelDAGToDAG.cpp +++ b/lib/Target/IA64/IA64ISelDAGToDAG.cpp @@ -27,7 +27,6 @@ #include "llvm/Intrinsics.h" #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" -#include #include #include using namespace llvm; diff --git a/lib/Target/IA64/IA64RegisterInfo.cpp b/lib/Target/IA64/IA64RegisterInfo.cpp index fd9f9efde86..3c66c448536 100644 --- a/lib/Target/IA64/IA64RegisterInfo.cpp +++ b/lib/Target/IA64/IA64RegisterInfo.cpp @@ -29,10 +29,8 @@ #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Support/CommandLine.h" #include "llvm/ADT/STLExtras.h" -#include using namespace llvm; - IA64RegisterInfo::IA64RegisterInfo(const TargetInstrInfo &tii) : IA64GenRegisterInfo(IA64::ADJUSTCALLSTACKDOWN, IA64::ADJUSTCALLSTACKUP), TII(tii) {} diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 65145e5a3b6..032782b8ceb 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -41,7 +41,6 @@ #include "llvm/Target/TargetOptions.h" #include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringExtras.h" -#include #include using namespace llvm; @@ -295,7 +294,7 @@ namespace { void PPCAsmPrinter::printOp(const MachineOperand &MO) { switch (MO.getType()) { case MachineOperand::MO_Immediate: - std::cerr << "printOp() does not handle immediate values\n"; + cerr << "printOp() does not handle immediate values\n"; abort(); return; @@ -629,7 +628,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { SwitchToDataSection("\t.data", I); break; default: - std::cerr << "Unknown linkage type!"; + cerr << "Unknown linkage type!"; abort(); } diff --git a/lib/Target/PowerPC/PPCCodeEmitter.cpp b/lib/Target/PowerPC/PPCCodeEmitter.cpp index 5e5f2cda6a4..7f5e86fb93f 100644 --- a/lib/Target/PowerPC/PPCCodeEmitter.cpp +++ b/lib/Target/PowerPC/PPCCodeEmitter.cpp @@ -24,7 +24,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/Compiler.h" #include "llvm/Target/TargetOptions.h" -#include using namespace llvm; namespace { @@ -193,7 +192,7 @@ int PPCCodeEmitter::getMachineOpValue(MachineInstr &MI, MachineOperand &MO) { Reloc, MO.getMachineBasicBlock())); } else { - std::cerr << "ERROR: Unknown type of MachineOperand: " << MO << "\n"; + cerr << "ERROR: Unknown type of MachineOperand: " << MO << "\n"; abort(); } diff --git a/lib/Target/PowerPC/PPCHazardRecognizers.cpp b/lib/Target/PowerPC/PPCHazardRecognizers.cpp index 3ca6e4e689a..69ad1ea86ec 100644 --- a/lib/Target/PowerPC/PPCHazardRecognizers.cpp +++ b/lib/Target/PowerPC/PPCHazardRecognizers.cpp @@ -16,10 +16,8 @@ #include "PPC.h" #include "PPCInstrInfo.h" #include "llvm/Support/Debug.h" -#include using namespace llvm; - //===----------------------------------------------------------------------===// // PowerPC 970 Hazard Recognizer // @@ -52,7 +50,7 @@ PPCHazardRecognizer970::PPCHazardRecognizer970(const TargetInstrInfo &tii) } void PPCHazardRecognizer970::EndDispatchGroup() { - DEBUG(std::cerr << "=== Start of dispatch group\n"); + DOUT << "=== Start of dispatch group\n"; NumIssued = 0; // Structural hazard info. diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 1a3508e5ad6..d45c255d660 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -30,7 +30,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Compiler.h" -#include #include #include using namespace llvm; diff --git a/lib/Target/PowerPC/PPCInstrInfo.cpp b/lib/Target/PowerPC/PPCInstrInfo.cpp index da851e68480..1ba701f6a75 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.cpp +++ b/lib/Target/PowerPC/PPCInstrInfo.cpp @@ -16,7 +16,6 @@ #include "PPCGenInstrInfo.inc" #include "PPCTargetMachine.h" #include "llvm/CodeGen/MachineInstrBuilder.h" -#include using namespace llvm; PPCInstrInfo::PPCInstrInfo(PPCTargetMachine &tm) diff --git a/lib/Target/PowerPC/PPCJITInfo.cpp b/lib/Target/PowerPC/PPCJITInfo.cpp index 14527bf2a3d..29fdd6a2930 100644 --- a/lib/Target/PowerPC/PPCJITInfo.cpp +++ b/lib/Target/PowerPC/PPCJITInfo.cpp @@ -18,7 +18,6 @@ #include "llvm/Config/alloca.h" #include "llvm/Support/Debug.h" #include -#include using namespace llvm; static TargetJITInfo::JITCompilerFn JITCompilerFunction; diff --git a/lib/Target/PowerPC/PPCRegisterInfo.cpp b/lib/Target/PowerPC/PPCRegisterInfo.cpp index 6a21a50673c..61639c0d3f2 100644 --- a/lib/Target/PowerPC/PPCRegisterInfo.cpp +++ b/lib/Target/PowerPC/PPCRegisterInfo.cpp @@ -36,7 +36,6 @@ #include "llvm/Support/MathExtras.h" #include "llvm/ADT/STLExtras.h" #include -#include using namespace llvm; /// getRegisterNumbering - Given the enum value for some register, e.g. @@ -77,7 +76,7 @@ unsigned PPCRegisterInfo::getRegisterNumbering(unsigned RegEnum) { case R30: case X30: case F30: case V30: return 30; case R31: case X31: case F31: case V31: return 31; default: - std::cerr << "Unhandled reg in PPCRegisterInfo::getRegisterNumbering!\n"; + cerr << "Unhandled reg in PPCRegisterInfo::getRegisterNumbering!\n"; abort(); } } @@ -234,7 +233,7 @@ void PPCRegisterInfo::copyRegToReg(MachineBasicBlock &MBB, } else if (RC == PPC::VRRCRegisterClass) { BuildMI(MBB, MI, TII.get(PPC::VOR), DestReg).addReg(SrcReg).addReg(SrcReg); } else { - std::cerr << "Attempt to copy register that is not GPR or FPR"; + cerr << "Attempt to copy register that is not GPR or FPR"; abort(); } } diff --git a/lib/Target/PowerPC/PPCSubtarget.cpp b/lib/Target/PowerPC/PPCSubtarget.cpp index 643acc2cb2d..5c18e656656 100644 --- a/lib/Target/PowerPC/PPCSubtarget.cpp +++ b/lib/Target/PowerPC/PPCSubtarget.cpp @@ -15,7 +15,6 @@ #include "PPC.h" #include "llvm/Module.h" #include "PPCGenSubtarget.inc" -#include using namespace llvm; #if defined(__APPLE__) @@ -80,8 +79,8 @@ PPCSubtarget::PPCSubtarget(const Module &M, const std::string &FS, bool is64Bit) // If we are generating code for ppc64, verify that options make sense. if (is64Bit) { if (!has64BitSupport()) { - std::cerr << "PPC: Generation of 64-bit code for a 32-bit processor " - "requested. Ignoring 32-bit processor feature.\n"; + cerr << "PPC: Generation of 64-bit code for a 32-bit processor " + << "requested. Ignoring 32-bit processor feature.\n"; Has64BitSupport = true; } // Silently force 64-bit register use on ppc64. @@ -91,8 +90,8 @@ PPCSubtarget::PPCSubtarget(const Module &M, const std::string &FS, bool is64Bit) // If the user requested use of 64-bit regs, but the cpu selected doesn't // support it, warn and ignore. if (use64BitRegs() && !has64BitSupport()) { - std::cerr << "PPC: 64-bit registers requested on CPU without support. " - "Disabling 64-bit register use.\n"; + cerr << "PPC: 64-bit registers requested on CPU without support. " + << "Disabling 64-bit register use.\n"; Use64BitRegs = false; } diff --git a/lib/Target/Sparc/FPMover.cpp b/lib/Target/Sparc/FPMover.cpp index 2b24d991f04..b85d2a9da01 100644 --- a/lib/Target/Sparc/FPMover.cpp +++ b/lib/Target/Sparc/FPMover.cpp @@ -19,7 +19,6 @@ #include "llvm/Target/TargetInstrInfo.h" #include "llvm/ADT/Statistic.h" #include "llvm/Support/Debug.h" -#include using namespace llvm; namespace { @@ -108,12 +107,12 @@ bool FPMover::runOnMachineBasicBlock(MachineBasicBlock &MBB) { MI->getOperand(0).setReg(EvenDestReg); MI->getOperand(1).setReg(EvenSrcReg); - DEBUG(std::cerr << "FPMover: the modified instr is: " << *MI); + DOUT << "FPMover: the modified instr is: " << *MI; // Insert copy for the other half of the double. if (DestDReg != SrcDReg) { MI = BuildMI(MBB, I, TM.getInstrInfo()->get(SP::FMOVS), OddDestReg) .addReg(OddSrcReg); - DEBUG(std::cerr << "FPMover: the inserted instr is: " << *MI); + DOUT << "FPMover: the inserted instr is: " << *MI; } ++NumFpDs; } diff --git a/lib/Target/Sparc/SparcAsmPrinter.cpp b/lib/Target/Sparc/SparcAsmPrinter.cpp index 034c8f6967c..458b1531915 100644 --- a/lib/Target/Sparc/SparcAsmPrinter.cpp +++ b/lib/Target/Sparc/SparcAsmPrinter.cpp @@ -30,7 +30,6 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/MathExtras.h" #include -#include using namespace llvm; namespace { @@ -266,13 +265,13 @@ bool SparcAsmPrinter::doFinalization(Module &M) { SwitchToDataSection(".data", I); break; case GlobalValue::GhostLinkage: - std::cerr << "Should not have any unmaterialized functions!\n"; + cerr << "Should not have any unmaterialized functions!\n"; abort(); case GlobalValue::DLLImportLinkage: - std::cerr << "DLLImport linkage is not supported by this target!\n"; + cerr << "DLLImport linkage is not supported by this target!\n"; abort(); case GlobalValue::DLLExportLinkage: - std::cerr << "DLLExport linkage is not supported by this target!\n"; + cerr << "DLLExport linkage is not supported by this target!\n"; abort(); default: assert(0 && "Unknown linkage type!"); diff --git a/lib/Target/Sparc/SparcISelDAGToDAG.cpp b/lib/Target/Sparc/SparcISelDAGToDAG.cpp index 3f3f1e1cda8..e5e9b4463ca 100644 --- a/lib/Target/Sparc/SparcISelDAGToDAG.cpp +++ b/lib/Target/Sparc/SparcISelDAGToDAG.cpp @@ -24,7 +24,6 @@ #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/TargetLowering.h" #include "llvm/Support/Debug.h" -#include #include #include using namespace llvm; diff --git a/lib/Target/Sparc/SparcRegisterInfo.cpp b/lib/Target/Sparc/SparcRegisterInfo.cpp index 188fbdcfd93..eee4f6c8739 100644 --- a/lib/Target/Sparc/SparcRegisterInfo.cpp +++ b/lib/Target/Sparc/SparcRegisterInfo.cpp @@ -21,7 +21,6 @@ #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Type.h" #include "llvm/ADT/STLExtras.h" -#include using namespace llvm; SparcRegisterInfo::SparcRegisterInfo(SparcSubtarget &st, diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp index 98912a23531..ac43736da02 100644 --- a/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/lib/Target/Sparc/SparcTargetMachine.cpp @@ -16,7 +16,6 @@ #include "llvm/Module.h" #include "llvm/PassManager.h" #include "llvm/Target/TargetMachineRegistry.h" -#include using namespace llvm; namespace { diff --git a/lib/Target/SubtargetFeature.cpp b/lib/Target/SubtargetFeature.cpp index de48f4fbcb8..80621232c9e 100644 --- a/lib/Target/SubtargetFeature.cpp +++ b/lib/Target/SubtargetFeature.cpp @@ -13,10 +13,10 @@ #include "llvm/Target/SubtargetFeature.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/Support/Streams.h" #include #include #include -#include using namespace llvm; //===----------------------------------------------------------------------===// @@ -144,23 +144,23 @@ static void Help(const SubtargetFeatureKV *CPUTable, size_t CPUTableSize, unsigned MaxFeatLen = getLongestEntryLength(FeatTable, FeatTableSize); // Print the CPU table. - std::cerr << "Available CPUs for this target:\n\n"; + cerr << "Available CPUs for this target:\n\n"; for (size_t i = 0; i != CPUTableSize; i++) - std::cerr << " " << CPUTable[i].Key - << std::string(MaxCPULen - std::strlen(CPUTable[i].Key), ' ') - << " - " << CPUTable[i].Desc << ".\n"; - std::cerr << "\n"; + cerr << " " << CPUTable[i].Key + << std::string(MaxCPULen - std::strlen(CPUTable[i].Key), ' ') + << " - " << CPUTable[i].Desc << ".\n"; + cerr << "\n"; // Print the Feature table. - std::cerr << "Available features for this target:\n\n"; + cerr << "Available features for this target:\n\n"; for (size_t i = 0; i != FeatTableSize; i++) - std::cerr << " " << FeatTable[i].Key - << std::string(MaxFeatLen - std::strlen(FeatTable[i].Key), ' ') - << " - " << FeatTable[i].Desc << ".\n"; - std::cerr << "\n"; + cerr << " " << FeatTable[i].Key + << std::string(MaxFeatLen - std::strlen(FeatTable[i].Key), ' ') + << " - " << FeatTable[i].Desc << ".\n"; + cerr << "\n"; - std::cerr << "Use +feature to enable a feature, or -feature to disable it.\n" - << "For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n"; + cerr << "Use +feature to enable a feature, or -feature to disable it.\n" + << "For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n"; exit(1); } @@ -231,10 +231,10 @@ uint32_t SubtargetFeatures::getBits(const SubtargetFeatureKV *CPUTable, // Set base feature bits Bits = CPUEntry->Value; } else { - std::cerr << "'" << Features[0] - << "' is not a recognized processor for this target" - << " (ignoring processor)" - << "\n"; + cerr << "'" << Features[0] + << "' is not a recognized processor for this target" + << " (ignoring processor)" + << "\n"; } // Iterate through each feature for (size_t i = 1; i < Features.size(); i++) { @@ -253,10 +253,10 @@ uint32_t SubtargetFeatures::getBits(const SubtargetFeatureKV *CPUTable, if (isEnabled(Feature)) Bits |= FeatureEntry->Value; else Bits &= ~FeatureEntry->Value; } else { - std::cerr << "'" << Feature - << "' is not a recognized feature for this target" - << " (ignoring feature)" - << "\n"; + cerr << "'" << Feature + << "' is not a recognized feature for this target" + << " (ignoring feature)" + << "\n"; } } return Bits; @@ -278,10 +278,10 @@ void *SubtargetFeatures::getInfo(const SubtargetInfoKV *Table, if (Entry) { return Entry->Value; } else { - std::cerr << "'" << Features[0] - << "' is not a recognized processor for this target" - << " (ignoring processor)" - << "\n"; + cerr << "'" << Features[0] + << "' is not a recognized processor for this target" + << " (ignoring processor)" + << "\n"; return NULL; } } @@ -298,5 +298,5 @@ void SubtargetFeatures::print(std::ostream &OS) const { /// dump - Dump feature info. /// void SubtargetFeatures::dump() const { - print(std::cerr); + print(*cerr.stream()); } diff --git a/lib/Target/X86/X86FloatingPoint.cpp b/lib/Target/X86/X86FloatingPoint.cpp index 75321273a03..180e846e04d 100644 --- a/lib/Target/X86/X86FloatingPoint.cpp +++ b/lib/Target/X86/X86FloatingPoint.cpp @@ -44,7 +44,6 @@ #include "llvm/ADT/Statistic.h" #include "llvm/ADT/STLExtras.h" #include -#include #include using namespace llvm; @@ -70,12 +69,12 @@ namespace { unsigned StackTop; // The current top of the FP stack. void dumpStack() const { - std::cerr << "Stack contents:"; + cerr << "Stack contents:"; for (unsigned i = 0; i != StackTop; ++i) { - std::cerr << " FP" << Stack[i]; + cerr << " FP" << Stack[i]; assert(RegMap[Stack[i]] == i && "Stack[] doesn't match RegMap[]!"); } - std::cerr << "\n"; + cerr << "\n"; } private: // getSlot - Return the stack slot number a particular register number is @@ -211,7 +210,7 @@ bool FPS::processBasicBlock(MachineFunction &MF, MachineBasicBlock &BB) { PrevMI = prior(I); ++NumFP; // Keep track of # of pseudo instrs - DEBUG(std::cerr << "\nFPInst:\t"; MI->print(std::cerr, &(MF.getTarget()))); + DOUT << "\nFPInst:\t"; MI->print(*cerr.stream(), &(MF.getTarget())); // Get dead variables list now because the MI pointer may be deleted as part // of processing! @@ -238,7 +237,7 @@ bool FPS::processBasicBlock(MachineFunction &MF, MachineBasicBlock &BB) { for (unsigned i = 0, e = DeadRegs.size(); i != e; ++i) { unsigned Reg = DeadRegs[i]; if (Reg >= X86::FP0 && Reg <= X86::FP6) { - DEBUG(std::cerr << "Register FP#" << Reg-X86::FP0 << " is dead!\n"); + DOUT << "Register FP#" << Reg-X86::FP0 << " is dead!\n"; freeStackSlotAfter(I, Reg-X86::FP0); } } @@ -247,13 +246,13 @@ bool FPS::processBasicBlock(MachineFunction &MF, MachineBasicBlock &BB) { DEBUG( MachineBasicBlock::iterator PrevI(PrevMI); if (I == PrevI) { - std::cerr << "Just deleted pseudo instruction\n"; + cerr << "Just deleted pseudo instruction\n"; } else { MachineBasicBlock::iterator Start = I; // Rewind to first instruction newly inserted. while (Start != BB.begin() && prior(Start) != PrevI) --Start; - std::cerr << "Inserted instructions:\n\t"; - Start->print(std::cerr, &MF.getTarget()); + cerr << "Inserted instructions:\n\t"; + Start->print(*cerr.stream(), &MF.getTarget()); while (++Start != next(I)); } dumpStack(); diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 4f84327fdd9..5c0bd28fe74 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -34,7 +34,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include "llvm/ADT/Statistic.h" -#include #include #include using namespace llvm; diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 86b2563e921..3c882eaa14e 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -32,8 +32,6 @@ #include "llvm/Target/TargetOptions.h" #include "llvm/Support/CommandLine.h" #include "llvm/ADT/STLExtras.h" -#include - using namespace llvm; namespace { @@ -244,8 +242,8 @@ namespace { static bool TableIsSorted(const TableEntry *Table, unsigned NumEntries) { for (unsigned i = 1; i != NumEntries; ++i) if (!(Table[i-1] < Table[i])) { - std::cerr << "Entries out of order " << Table[i-1].from - << " " << Table[i].from << "\n"; + cerr << "Entries out of order " << Table[i-1].from + << " " << Table[i].from << "\n"; return false; } return true; @@ -845,8 +843,8 @@ MachineInstr* X86RegisterInfo::foldMemoryOperand(MachineInstr *MI, // No fusion if (PrintFailedFusing) - std::cerr << "We failed to fuse (" - << ((i == 1) ? "r" : "s") << "): " << *MI; + cerr << "We failed to fuse (" + << ((i == 1) ? "r" : "s") << "): " << *MI; return NULL; } diff --git a/lib/Target/X86/X86Subtarget.cpp b/lib/Target/X86/X86Subtarget.cpp index 2459ed122c0..ff88fdbca26 100644 --- a/lib/Target/X86/X86Subtarget.cpp +++ b/lib/Target/X86/X86Subtarget.cpp @@ -15,7 +15,6 @@ #include "X86GenSubtarget.inc" #include "llvm/Module.h" #include "llvm/Support/CommandLine.h" -#include using namespace llvm; cl::opt @@ -224,10 +223,10 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) ParseSubtargetFeatures(FS, CPU); if (Is64Bit && !HasX86_64) - std::cerr << "Warning: Generation of 64-bit code for a 32-bit processor " - "requested.\n"; + cerr << "Warning: Generation of 64-bit code for a 32-bit processor " + << "requested.\n"; if (Is64Bit && X86SSELevel < SSE2) - std::cerr << "Warning: 64-bit processors all have at least SSE2.\n"; + cerr << "Warning: 64-bit processors all have at least SSE2.\n"; } else { // Otherwise, use CPUID to auto-detect feature set. AutoDetectSubtargetFeatures(); diff --git a/lib/Transforms/IPO/FunctionResolution.cpp b/lib/Transforms/IPO/FunctionResolution.cpp index 01d7b5a349e..f6e8cf59134 100644 --- a/lib/Transforms/IPO/FunctionResolution.cpp +++ b/lib/Transforms/IPO/FunctionResolution.cpp @@ -29,7 +29,6 @@ #include "llvm/Assembly/Writer.h" #include "llvm/ADT/Statistic.h" #include -#include using namespace llvm; namespace { @@ -65,9 +64,9 @@ static bool ResolveFunctions(Module &M, std::vector &Globals, cerr << "WARNING: Linking function '" << Old->getName() << "' is causing arguments to be dropped.\n"; cerr << "WARNING: Prototype: "; - WriteAsOperand(std::cerr, Old); + WriteAsOperand(*cerr.stream(), Old); cerr << " resolved to "; - WriteAsOperand(std::cerr, Concrete); + WriteAsOperand(*cerr.stream(), Concrete); cerr << "\n"; } @@ -84,10 +83,10 @@ static bool ResolveFunctions(Module &M, std::vector &Globals, ConcreteFT->getParamType(i)->getTypeID()) { cerr << "WARNING: Function [" << Old->getName() << "]: Parameter types conflict for: '"; - WriteTypeSymbolic(std::cerr, OldFT, &M); + WriteTypeSymbolic(*cerr.stream(), OldFT, &M); cerr << "' (in " << Old->getParent()->getModuleIdentifier() << ") and '"; - WriteTypeSymbolic(std::cerr, ConcreteFT, &M); + WriteTypeSymbolic(*cerr.stream(), ConcreteFT, &M); cerr << "'(in " << Concrete->getParent()->getModuleIdentifier() << ")\n"; return Changed; @@ -254,7 +253,7 @@ static bool ProcessGlobalsWithSameName(Module &M, TargetData &TD, cerr << "WARNING: Found global types that are not compatible:\n"; for (unsigned i = 0; i < Globals.size(); ++i) { cerr << "\t"; - WriteTypeSymbolic(std::cerr, Globals[i]->getType(), &M); + WriteTypeSymbolic(*cerr.stream(), Globals[i]->getType(), &M); cerr << " %" << Globals[i]->getName() << "\n"; } } diff --git a/utils/TableGen/AsmWriterEmitter.cpp b/utils/TableGen/AsmWriterEmitter.cpp index c8af097250d..24d2eef07a0 100644 --- a/utils/TableGen/AsmWriterEmitter.cpp +++ b/utils/TableGen/AsmWriterEmitter.cpp @@ -19,7 +19,6 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include -#include using namespace llvm; static bool isIdentChar(char C) { @@ -551,8 +550,8 @@ void AsmWriterEmitter::run(std::ostream &O) { // If we don't have enough bits for this operand, don't include it. if (NumBits > BitsLeft) { - DEBUG(std::cerr << "Not enough bits to densely encode " << NumBits - << " more bits\n"); + DOUT << "Not enough bits to densely encode " << NumBits + << " more bits\n"; break; } diff --git a/utils/TableGen/CodeEmitterGen.cpp b/utils/TableGen/CodeEmitterGen.cpp index c64b5f454d2..861c6b0e34c 100644 --- a/utils/TableGen/CodeEmitterGen.cpp +++ b/utils/TableGen/CodeEmitterGen.cpp @@ -214,7 +214,7 @@ void CodeEmitterGen::run(std::ostream &o) { // Default case: unhandled opcode o << " default:\n" - << " std::cerr << \"Not supported instr: \" << MI << \"\\n\";\n" + << " cerr << \"Not supported instr: \" << MI << \"\\n\";\n" << " abort();\n" << " }\n" << " return Value;\n" diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index a8d3abccafb..e6ac2c3573e 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -19,6 +19,7 @@ #include "Record.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/Streams.h" #include #include using namespace llvm; @@ -527,8 +528,8 @@ ComplexPattern::ComplexPattern(Record *R) { } else if (PropList[i]->getName() == "SDNPOptInFlag") { Properties |= 1 << SDNPOptInFlag; } else { - std::cerr << "Unsupported SD Node property '" << PropList[i]->getName() - << "' on ComplexPattern '" << R->getName() << "'!\n"; + cerr << "Unsupported SD Node property '" << PropList[i]->getName() + << "' on ComplexPattern '" << R->getName() << "'!\n"; exit(1); } } diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 0b176088a0e..08ac808833f 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" +#include "llvm/Support/Streams.h" #include #include using namespace llvm; @@ -109,7 +110,7 @@ SDTypeConstraint::SDTypeConstraint(Record *R) { x.SDTCisIntVectorOfSameSize_Info.OtherOperandNum = R->getValueAsInt("OtherOpNum"); } else { - std::cerr << "Unrecognized SDTypeConstraint '" << R->getName() << "'!\n"; + cerr << "Unrecognized SDTypeConstraint '" << R->getName() << "'!\n"; exit(1); } } @@ -123,9 +124,9 @@ TreePatternNode *SDTypeConstraint::getOperandNum(unsigned OpNo, "We only work with nodes with zero or one result so far!"); if (OpNo >= (NumResults + N->getNumChildren())) { - std::cerr << "Invalid operand number " << OpNo << " "; + cerr << "Invalid operand number " << OpNo << " "; N->dump(); - std::cerr << '\n'; + cerr << '\n'; exit(1); } @@ -316,8 +317,8 @@ SDNodeInfo::SDNodeInfo(Record *R) : Def(R) { } else if (PropList[i]->getName() == "SDNPOptInFlag") { Properties |= 1 << SDNPOptInFlag; } else { - std::cerr << "Unknown SD Node property '" << PropList[i]->getName() - << "' on node '" << R->getName() << "'!\n"; + cerr << "Unknown SD Node property '" << PropList[i]->getName() + << "' on node '" << R->getName() << "'!\n"; exit(1); } } @@ -412,7 +413,7 @@ bool TreePatternNode::UpdateNodeType(const std::vector &ExtVTs, if (isLeaf()) { dump(); - std::cerr << " "; + cerr << " "; TP.error("Type inference contradiction found in node!"); } else { TP.error("Type inference contradiction found in node " + @@ -468,7 +469,7 @@ void TreePatternNode::print(std::ostream &OS) const { } void TreePatternNode::dump() const { - print(std::cerr); + print(*cerr.stream()); } /// isIsomorphicTo - Return true if this node is recursively isomorphic to @@ -1009,9 +1010,9 @@ TreePatternNode *TreePattern::ParseTreePattern(DagInit *Dag) { error("Constant int argument should not have a name!"); Children.push_back(Node); } else { - std::cerr << '"'; + cerr << '"'; Arg->dump(); - std::cerr << "\": "; + cerr << "\": "; error("Unknown leaf value for tree pattern!"); } } @@ -1081,7 +1082,7 @@ void TreePattern::print(std::ostream &OS) const { OS << "]\n"; } -void TreePattern::dump() const { print(std::cerr); } +void TreePattern::dump() const { print(*cerr.stream()); } @@ -1622,7 +1623,7 @@ void DAGISelEmitter::ParseInstructions() { if (I == 0) continue; // No pattern. if (I->getNumTrees() != 1) { - std::cerr << "CANNOT HANDLE: " << I->getRecord()->getName() << " yet!"; + cerr << "CANNOT HANDLE: " << I->getRecord()->getName() << " yet!"; continue; } TreePatternNode *Pattern = I->getTree(0); @@ -1949,7 +1950,7 @@ static void GenerateVariantsOf(TreePatternNode *N, // match multiple ways. Add them to PatternsToMatch as well. void DAGISelEmitter::GenerateVariants() { - DEBUG(std::cerr << "Generating instruction variants.\n"); + DOUT << "Generating instruction variants.\n"; // Loop over all of the patterns we've collected, checking to see if we can // generate variants of the instruction, through the exploitation of @@ -1970,23 +1971,23 @@ void DAGISelEmitter::GenerateVariants() { if (Variants.empty()) // No variants for this pattern. continue; - DEBUG(std::cerr << "FOUND VARIANTS OF: "; - PatternsToMatch[i].getSrcPattern()->dump(); - std::cerr << "\n"); + DOUT << "FOUND VARIANTS OF: "; + DEBUG(PatternsToMatch[i].getSrcPattern()->dump()); + DOUT << "\n"; for (unsigned v = 0, e = Variants.size(); v != e; ++v) { TreePatternNode *Variant = Variants[v]; - DEBUG(std::cerr << " VAR#" << v << ": "; - Variant->dump(); - std::cerr << "\n"); + DOUT << " VAR#" << v << ": "; + DEBUG(Variant->dump()); + DOUT << "\n"; // Scan to see if an instruction or explicit pattern already matches this. bool AlreadyExists = false; for (unsigned p = 0, e = PatternsToMatch.size(); p != e; ++p) { // Check to see if this variant already exists. if (Variant->isIsomorphicTo(PatternsToMatch[p].getSrcPattern())) { - DEBUG(std::cerr << " *** ALREADY EXISTS, ignoring variant.\n"); + DOUT << " *** ALREADY EXISTS, ignoring variant.\n"; AlreadyExists = true; break; } @@ -2001,7 +2002,7 @@ void DAGISelEmitter::GenerateVariants() { PatternsToMatch[i].getAddedComplexity())); } - DEBUG(std::cerr << "\n"); + DOUT << "\n"; } } @@ -2160,7 +2161,7 @@ static void RemoveAllTypes(TreePatternNode *N) { Record *DAGISelEmitter::getSDNodeNamed(const std::string &Name) const { Record *N = Records.getDef(Name); if (!N || !N->isSubClassOf("SDNode")) { - std::cerr << "Error getting SDNode '" << Name << "'!\n"; + cerr << "Error getting SDNode '" << Name << "'!\n"; exit(1); } return N; @@ -2569,7 +2570,7 @@ public: } else { #ifndef NDEBUG Child->dump(); - std::cerr << " "; + cerr << " "; #endif assert(0 && "Unknown leaf type!"); } @@ -3068,7 +3069,7 @@ public: return NodeOps; } else { N->dump(); - std::cerr << "\n"; + cerr << "\n"; throw std::string("Unknown node in result pattern!"); } } @@ -3443,12 +3444,11 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { &PatternsToMatch[i]); } } else { - std::cerr << "Unrecognized opcode '"; + cerr << "Unrecognized opcode '"; Node->dump(); - std::cerr << "' on tree pattern '"; - std::cerr << - PatternsToMatch[i].getDstPattern()->getOperator()->getName(); - std::cerr << "'!\n"; + cerr << "' on tree pattern '"; + cerr << PatternsToMatch[i].getDstPattern()->getOperator()->getName(); + cerr << "'!\n"; exit(1); } } @@ -3534,9 +3534,9 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { // If this pattern definitely matches, and if it isn't the last one, the // patterns after it CANNOT ever match. Error out. if (mightNotMatch == false && i != CodeForPatterns.size()-1) { - std::cerr << "Pattern '"; - CodeForPatterns[i].first->getSrcPattern()->print(std::cerr); - std::cerr << "' is impossible to select!\n"; + cerr << "Pattern '"; + CodeForPatterns[i].first->getSrcPattern()->print(*cerr.stream()); + cerr << "' is impossible to select!\n"; exit(1); } } @@ -3650,7 +3650,7 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { // If the last pattern has predicates (which could fail) emit code to // catch the case where nothing handles a pattern. if (mightNotMatch) { - OS << " std::cerr << \"Cannot yet select: \";\n"; + OS << " cerr << \"Cannot yet select: \";\n"; if (OpName != "ISD::INTRINSIC_W_CHAIN" && OpName != "ISD::INTRINSIC_WO_CHAIN" && OpName != "ISD::INTRINSIC_VOID") { @@ -3658,10 +3658,10 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { } else { OS << " unsigned iid = cast(N.getOperand(" "N.getOperand(0).getValueType() == MVT::Other))->getValue();\n" - << " std::cerr << \"intrinsic %\"<< " + << " cerr << \"intrinsic %\"<< " "Intrinsic::getName((Intrinsic::ID)iid);\n"; } - OS << " std::cerr << '\\n';\n" + OS << " cerr << '\\n';\n" << " abort();\n" << " return NULL;\n"; } @@ -3780,7 +3780,7 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { } OS << " } // end of big switch.\n\n" - << " std::cerr << \"Cannot yet select: \";\n" + << " cerr << \"Cannot yet select: \";\n" << " if (N.getOpcode() != ISD::INTRINSIC_W_CHAIN &&\n" << " N.getOpcode() != ISD::INTRINSIC_WO_CHAIN &&\n" << " N.getOpcode() != ISD::INTRINSIC_VOID) {\n" @@ -3788,10 +3788,10 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { << " } else {\n" << " unsigned iid = cast(N.getOperand(" "N.getOperand(0).getValueType() == MVT::Other))->getValue();\n" - << " std::cerr << \"intrinsic %\"<< " - "Intrinsic::getName((Intrinsic::ID)iid);\n" + << " cerr << \"intrinsic %\"<< " + "Intrinsic::getName((Intrinsic::ID)iid);\n" << " }\n" - << " std::cerr << '\\n';\n" + << " cerr << '\\n';\n" << " abort();\n" << " return NULL;\n" << "}\n"; @@ -3937,13 +3937,12 @@ OS << " unsigned NumKilled = ISelKilled.size();\n"; // multiple ways. Add them to PatternsToMatch as well. GenerateVariants(); - - DEBUG(std::cerr << "\n\nALL PATTERNS TO MATCH:\n\n"; - for (unsigned i = 0, e = PatternsToMatch.size(); i != e; ++i) { - std::cerr << "PATTERN: "; PatternsToMatch[i].getSrcPattern()->dump(); - std::cerr << "\nRESULT: ";PatternsToMatch[i].getDstPattern()->dump(); - std::cerr << "\n"; - }); + DOUT << "\n\nALL PATTERNS TO MATCH:\n\n"; + for (unsigned i = 0, e = PatternsToMatch.size(); i != e; ++i) { + DOUT << "PATTERN: "; DEBUG(PatternsToMatch[i].getSrcPattern()->dump()); + DOUT << "\nRESULT: "; DEBUG(PatternsToMatch[i].getDstPattern()->dump()); + DOUT << "\n"; + } // At this point, we have full information about the 'Patterns' we need to // parse, both implicitly from instructions as well as from explicit pattern diff --git a/utils/TableGen/FileLexer.cpp.cvs b/utils/TableGen/FileLexer.cpp.cvs index 51c9db61c5c..e097507e408 100644 --- a/utils/TableGen/FileLexer.cpp.cvs +++ b/utils/TableGen/FileLexer.cpp.cvs @@ -501,7 +501,7 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 1 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" #define INITIAL 0 /*===-- FileLexer.l - Scanner for TableGen Files ----------------*- C++ -*-===// // @@ -519,8 +519,9 @@ char *yytext; #define YY_NEVER_INTERACTIVE 1 #define comment 1 -#line 30 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 30 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" #include "llvm/Config/config.h" +#include "llvm/Support/Streams.h" #include "Record.h" typedef std::pair*> SubClassRefTy; #include "FileParser.h" @@ -556,14 +557,17 @@ struct IncludeRec { static std::vector IncludeStack; std::ostream &err() { - if (IncludeStack.empty()) - return std::cerr << "At end of input: "; + if (IncludeStack.empty()) { + cerr << "At end of input: "; + return *cerr.stream(); + } for (unsigned i = 0, e = IncludeStack.size()-1; i != e; ++i) - std::cerr << "Included from " << IncludeStack[i].Filename << ":" - << IncludeStack[i].LineNo << ":\n"; - return std::cerr << "Parsing " << IncludeStack.back().Filename << ":" - << Filelineno << ": "; + cerr << "Included from " << IncludeStack[i].Filename << ":" + << IncludeStack[i].LineNo << ":\n"; + cerr << "Parsing " << IncludeStack.back().Filename << ":" + << Filelineno << ": "; + return *cerr.stream(); } /// ParseFile - this function begins the parsing of the specified tablegen file. @@ -575,7 +579,7 @@ void ParseFile(const std::string &Filename, F = fopen(Filename.c_str(), "r"); if (F == 0) { - std::cerr << "Could not open input file '" + Filename + "'!\n"; + cerr << "Could not open input file '" + Filename + "'!\n"; exit (1); } IncludeStack.push_back(IncludeRec(Filename, F)); @@ -607,7 +611,7 @@ static void HandleInclude(const char *Buffer) { } assert(Length >= 2 && "Double quotes not found?"); std::string Filename(Buffer+1, Buffer+Length-1); - //std::cerr << "Filename = '" << Filename << "'\n"; + //cerr << "Filename = '" << Filename << "'\n"; // Save the line number and lex buffer of the includer... IncludeStack.back().LineNo = Filelineno; @@ -661,7 +665,7 @@ int yywrap(void) { using namespace llvm; -#line 665 "Lexer.cpp" +#line 669 "Lexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -812,10 +816,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 181 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 185 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" -#line 819 "Lexer.cpp" +#line 823 "Lexer.cpp" if ( yy_init ) { @@ -908,183 +912,183 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 183 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 187 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { /* Ignore comments */ } YY_BREAK case 2: YY_RULE_SETUP -#line 185 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 189 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { HandleInclude(yytext); } YY_BREAK case 3: YY_RULE_SETUP -#line 186 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 190 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+2, yytext+yyleng-2); return CODEFRAGMENT; } YY_BREAK case 4: YY_RULE_SETUP -#line 189 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 193 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return INT; } YY_BREAK case 5: YY_RULE_SETUP -#line 190 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 194 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return BIT; } YY_BREAK case 6: YY_RULE_SETUP -#line 191 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 195 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return BITS; } YY_BREAK case 7: YY_RULE_SETUP -#line 192 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 196 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return STRING; } YY_BREAK case 8: YY_RULE_SETUP -#line 193 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 197 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return LIST; } YY_BREAK case 9: YY_RULE_SETUP -#line 194 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 198 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return CODE; } YY_BREAK case 10: YY_RULE_SETUP -#line 195 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 199 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return DAG; } YY_BREAK case 11: YY_RULE_SETUP -#line 197 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 201 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return CLASS; } YY_BREAK case 12: YY_RULE_SETUP -#line 198 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 202 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return DEF; } YY_BREAK case 13: YY_RULE_SETUP -#line 199 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 203 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return DEFM; } YY_BREAK case 14: YY_RULE_SETUP -#line 200 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 204 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return MULTICLASS; } YY_BREAK case 15: YY_RULE_SETUP -#line 201 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 205 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return FIELD; } YY_BREAK case 16: YY_RULE_SETUP -#line 202 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 206 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return LET; } YY_BREAK case 17: YY_RULE_SETUP -#line 203 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 207 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return IN; } YY_BREAK case 18: YY_RULE_SETUP -#line 205 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 209 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return SRATOK; } YY_BREAK case 19: YY_RULE_SETUP -#line 206 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 210 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return SRLTOK; } YY_BREAK case 20: YY_RULE_SETUP -#line 207 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 211 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return SHLTOK; } YY_BREAK case 21: YY_RULE_SETUP -#line 208 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 212 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return STRCONCATTOK; } YY_BREAK case 22: YY_RULE_SETUP -#line 211 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 215 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext, yytext+yyleng); return ID; } YY_BREAK case 23: YY_RULE_SETUP -#line 213 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 217 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng); return VARNAME; } YY_BREAK case 24: YY_RULE_SETUP -#line 216 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 220 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { Filelval.StrVal = new std::string(yytext+1, yytext+yyleng-1); return STRVAL; } YY_BREAK case 25: YY_RULE_SETUP -#line 219 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 223 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { Filelval.IntVal = ParseInt(Filetext); return INTVAL; } YY_BREAK case 26: YY_RULE_SETUP -#line 221 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 225 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { /* Ignore whitespace */ } YY_BREAK case 27: YY_RULE_SETUP -#line 224 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 228 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { BEGIN(comment); CommentDepth++; } YY_BREAK case 28: YY_RULE_SETUP -#line 225 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 229 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" {} /* eat anything that's not a '*' or '/' */ YY_BREAK case 29: YY_RULE_SETUP -#line 226 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 230 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" {} /* eat up '*'s not followed by '/'s */ YY_BREAK case 30: YY_RULE_SETUP -#line 227 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 231 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { ++CommentDepth; } YY_BREAK case 31: YY_RULE_SETUP -#line 228 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 232 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" {} /* eat up /'s not followed by *'s */ YY_BREAK case 32: YY_RULE_SETUP -#line 229 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 233 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { if (!--CommentDepth) { BEGIN(INITIAL); } } YY_BREAK case YY_STATE_EOF(comment): -#line 230 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 234 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { err() << "Unterminated comment!\n"; exit(1); } YY_BREAK case 33: YY_RULE_SETUP -#line 232 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 236 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" { return Filetext[0]; } YY_BREAK case 34: YY_RULE_SETUP -#line 234 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 238 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1088 "Lexer.cpp" +#line 1092 "Lexer.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1508,7 +1512,7 @@ static int input() case EOB_ACT_END_OF_FILE: { if ( yywrap() ) - return EOF; + return 0; if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; @@ -1968,6 +1972,6 @@ int main() return 0; } #endif -#line 234 "/Users/sabre/cvs/llvm/utils/TableGen/FileLexer.l" +#line 238 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileLexer.l" diff --git a/utils/TableGen/FileLexer.l b/utils/TableGen/FileLexer.l index 653e9d10fbf..cc6825f5e07 100644 --- a/utils/TableGen/FileLexer.l +++ b/utils/TableGen/FileLexer.l @@ -28,6 +28,7 @@ %{ #include "llvm/Config/config.h" +#include "llvm/Support/Streams.h" #include "Record.h" typedef std::pair*> SubClassRefTy; #include "FileParser.h" @@ -63,14 +64,17 @@ struct IncludeRec { static std::vector IncludeStack; std::ostream &err() { - if (IncludeStack.empty()) - return std::cerr << "At end of input: "; + if (IncludeStack.empty()) { + cerr << "At end of input: "; + return *cerr.stream(); + } for (unsigned i = 0, e = IncludeStack.size()-1; i != e; ++i) - std::cerr << "Included from " << IncludeStack[i].Filename << ":" - << IncludeStack[i].LineNo << ":\n"; - return std::cerr << "Parsing " << IncludeStack.back().Filename << ":" - << Filelineno << ": "; + cerr << "Included from " << IncludeStack[i].Filename << ":" + << IncludeStack[i].LineNo << ":\n"; + cerr << "Parsing " << IncludeStack.back().Filename << ":" + << Filelineno << ": "; + return *cerr.stream(); } /// ParseFile - this function begins the parsing of the specified tablegen file. @@ -82,7 +86,7 @@ void ParseFile(const std::string &Filename, F = fopen(Filename.c_str(), "r"); if (F == 0) { - std::cerr << "Could not open input file '" + Filename + "'!\n"; + cerr << "Could not open input file '" + Filename + "'!\n"; exit (1); } IncludeStack.push_back(IncludeRec(Filename, F)); @@ -114,7 +118,7 @@ static void HandleInclude(const char *Buffer) { } assert(Length >= 2 && "Double quotes not found?"); std::string Filename(Buffer+1, Buffer+Length-1); - //std::cerr << "Filename = '" << Filename << "'\n"; + //cerr << "Filename = '" << Filename << "'\n"; // Save the line number and lex buffer of the includer... IncludeStack.back().LineNo = Filelineno; diff --git a/utils/TableGen/FileLexer.l.cvs b/utils/TableGen/FileLexer.l.cvs index 653e9d10fbf..cc6825f5e07 100644 --- a/utils/TableGen/FileLexer.l.cvs +++ b/utils/TableGen/FileLexer.l.cvs @@ -28,6 +28,7 @@ %{ #include "llvm/Config/config.h" +#include "llvm/Support/Streams.h" #include "Record.h" typedef std::pair*> SubClassRefTy; #include "FileParser.h" @@ -63,14 +64,17 @@ struct IncludeRec { static std::vector IncludeStack; std::ostream &err() { - if (IncludeStack.empty()) - return std::cerr << "At end of input: "; + if (IncludeStack.empty()) { + cerr << "At end of input: "; + return *cerr.stream(); + } for (unsigned i = 0, e = IncludeStack.size()-1; i != e; ++i) - std::cerr << "Included from " << IncludeStack[i].Filename << ":" - << IncludeStack[i].LineNo << ":\n"; - return std::cerr << "Parsing " << IncludeStack.back().Filename << ":" - << Filelineno << ": "; + cerr << "Included from " << IncludeStack[i].Filename << ":" + << IncludeStack[i].LineNo << ":\n"; + cerr << "Parsing " << IncludeStack.back().Filename << ":" + << Filelineno << ": "; + return *cerr.stream(); } /// ParseFile - this function begins the parsing of the specified tablegen file. @@ -82,7 +86,7 @@ void ParseFile(const std::string &Filename, F = fopen(Filename.c_str(), "r"); if (F == 0) { - std::cerr << "Could not open input file '" + Filename + "'!\n"; + cerr << "Could not open input file '" + Filename + "'!\n"; exit (1); } IncludeStack.push_back(IncludeRec(Filename, F)); @@ -114,7 +118,7 @@ static void HandleInclude(const char *Buffer) { } assert(Length >= 2 && "Double quotes not found?"); std::string Filename(Buffer+1, Buffer+Length-1); - //std::cerr << "Filename = '" << Filename << "'\n"; + //cerr << "Filename = '" << Filename << "'\n"; // Save the line number and lex buffer of the includer... IncludeStack.back().LineNo = Filelineno; diff --git a/utils/TableGen/FileParser.cpp.cvs b/utils/TableGen/FileParser.cpp.cvs index 1f0ff3f0285..6cfc3dde27a 100644 --- a/utils/TableGen/FileParser.cpp.cvs +++ b/utils/TableGen/FileParser.cpp.cvs @@ -1,44 +1,138 @@ +/* A Bison parser, made by GNU Bison 2.3. */ -/* A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y - by GNU Bison version 1.28 */ +/* Skeleton implementation for Bison's Yacc-like parsers in C -#define YYBISON 1 /* Identify Bison output. */ + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ #define yyparse Fileparse -#define yylex Filelex +#define yylex Filelex #define yyerror Fileerror -#define yylval Filelval -#define yychar Filechar +#define yylval Filelval +#define yychar Filechar #define yydebug Filedebug #define yynerrs Filenerrs -#define INT 257 -#define BIT 258 -#define STRING 259 -#define BITS 260 -#define LIST 261 -#define CODE 262 -#define DAG 263 -#define CLASS 264 -#define DEF 265 -#define MULTICLASS 266 -#define DEFM 267 -#define FIELD 268 -#define LET 269 -#define IN 270 -#define SHLTOK 271 -#define SRATOK 272 -#define SRLTOK 273 -#define STRCONCATTOK 274 -#define INTVAL 275 -#define ID 276 -#define VARNAME 277 -#define STRVAL 278 -#define CODEFRAGMENT 279 - -#line 14 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INT = 258, + BIT = 259, + STRING = 260, + BITS = 261, + LIST = 262, + CODE = 263, + DAG = 264, + CLASS = 265, + DEF = 266, + MULTICLASS = 267, + DEFM = 268, + FIELD = 269, + LET = 270, + IN = 271, + SHLTOK = 272, + SRATOK = 273, + SRLTOK = 274, + STRCONCATTOK = 275, + INTVAL = 276, + ID = 277, + VARNAME = 278, + STRVAL = 279, + CODEFRAGMENT = 280 + }; +#endif +/* Tokens. */ +#define INT 258 +#define BIT 259 +#define STRING 260 +#define BITS 261 +#define LIST 262 +#define CODE 263 +#define DAG 264 +#define CLASS 265 +#define DEF 266 +#define MULTICLASS 267 +#define DEFM 268 +#define FIELD 269 +#define LET 270 +#define IN 271 +#define SHLTOK 272 +#define SRATOK 273 +#define SRLTOK 274 +#define STRCONCATTOK 275 +#define INTVAL 276 +#define ID 277 +#define VARNAME 278 +#define STRVAL 279 +#define CODEFRAGMENT 280 + + + + +/* Copy the first part of user declarations. */ +#line 14 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" #include "Record.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/Support/Streams.h" #include #include #define YYERROR_VERBOSE 1 @@ -149,7 +243,7 @@ static void setValue(const std::string &ValName, } // We should have a BitsInit type now... - assert(dynamic_cast(BI) != 0 || &(std::cerr << *BI) == 0); + assert(dynamic_cast(BI) != 0 || (cerr << *BI).stream() == 0); BitsInit *BInit = (BitsInit*)BI; BitsInit *NewVal = new BitsInit(CurVal->getNumBits()); @@ -230,8 +324,29 @@ static void addSubClass(Record *SC, const std::vector &TemplateArgs) { using namespace llvm; -#line 209 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -typedef union { + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 210 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" +{ std::string* StrVal; int IntVal; llvm::RecTy* Ty; @@ -243,572 +358,1195 @@ typedef union { SubClassRefTy* SubClassRef; std::vector* SubClassList; std::vector >* DagValueList; -} YYSTYPE; -#include +} +/* Line 193 of yacc.c. */ +#line 364 "FileParser.tab.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ -#ifndef __cplusplus -#ifndef __STDC__ -#define const + +/* Line 216 of yacc.c. */ +#line 377 "FileParser.tab.c" + +#ifdef short +# undef short #endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif -#define YYFINAL 188 -#define YYFLAG -32768 -#define YYNTBASE 41 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 279 ? yytranslate[x] : 90) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, - 36, 2, 2, 37, 39, 34, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 38, 40, 26, - 28, 27, 29, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 32, 2, 33, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 30, 2, 31, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25 -}; +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 6, 11, 13, 18, 20, 22, 24, - 25, 27, 28, 31, 33, 35, 37, 39, 41, 43, - 47, 52, 57, 61, 65, 70, 75, 82, 89, 96, - 103, 104, 107, 110, 115, 116, 118, 120, 124, 127, - 131, 137, 142, 144, 145, 149, 150, 152, 154, 158, - 163, 166, 173, 174, 177, 179, 183, 185, 190, 192, - 196, 197, 200, 202, 206, 210, 211, 213, 215, 216, - 218, 220, 222, 223, 227, 228, 229, 236, 240, 242, - 244, 247, 249, 250, 251, 260, 261, 268, 270, 272, - 274, 276, 281, 283, 287, 288, 293, 298, 301, 303, - 306 -}; +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif -static const short yyrhs[] = { 22, - 0, 5, 0, 4, 0, 6, 26, 21, 27, 0, - 3, 0, 7, 26, 42, 27, 0, 8, 0, 9, - 0, 41, 0, 0, 14, 0, 0, 28, 46, 0, - 22, 0, 45, 0, 21, 0, 24, 0, 25, 0, - 29, 0, 30, 53, 31, 0, 22, 26, 54, 27, - 0, 46, 30, 51, 31, 0, 32, 53, 33, 0, - 46, 34, 22, 0, 35, 45, 49, 36, 0, 46, - 32, 51, 33, 0, 17, 35, 46, 37, 46, 36, - 0, 18, 35, 46, 37, 46, 36, 0, 19, 35, - 46, 37, 46, 36, 0, 20, 35, 46, 37, 46, - 36, 0, 0, 38, 23, 0, 46, 47, 0, 48, - 37, 46, 47, 0, 0, 48, 0, 21, 0, 21, - 39, 21, 0, 21, 21, 0, 50, 37, 21, 0, - 50, 37, 21, 39, 21, 0, 50, 37, 21, 21, - 0, 50, 0, 0, 30, 51, 31, 0, 0, 54, - 0, 46, 0, 54, 37, 46, 0, 43, 42, 22, - 44, 0, 55, 40, 0, 15, 22, 52, 28, 46, - 40, 0, 0, 57, 56, 0, 40, 0, 30, 57, - 31, 0, 41, 0, 41, 26, 54, 27, 0, 59, - 0, 60, 37, 59, 0, 0, 38, 60, 0, 55, - 0, 62, 37, 55, 0, 26, 62, 27, 0, 0, - 63, 0, 22, 0, 0, 65, 0, 66, 0, 66, - 0, 0, 61, 70, 58, 0, 0, 0, 10, 67, - 72, 64, 73, 69, 0, 11, 68, 69, 0, 74, - 0, 75, 0, 76, 75, 0, 22, 0, 0, 0, - 12, 77, 79, 64, 80, 30, 76, 31, 0, 0, - 13, 22, 82, 38, 59, 40, 0, 71, 0, 74, - 0, 78, 0, 81, 0, 22, 52, 28, 46, 0, - 84, 0, 85, 37, 84, 0, 0, 15, 87, 85, - 16, 0, 86, 30, 88, 31, 0, 86, 83, 0, - 83, 0, 88, 83, 0, 88, 0 -}; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ #endif -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 245, 267, 269, 271, 273, 275, 277, 279, 281, 285, - 285, 287, 287, 289, 312, 314, 316, 319, 322, 324, - 337, 365, 372, 375, 382, 385, 393, 395, 397, 399, - 403, 406, 410, 415, 421, 424, 427, 430, 443, 457, - 459, 472, 488, 490, 490, 494, 496, 500, 503, 507, - 524, 526, 532, 532, 533, 533, 535, 537, 541, 546, - 551, 554, 558, 561, 566, 567, 567, 569, 569, 571, - 578, 596, 621, 635, 640, 642, 644, 648, 658, 672, - 675, 679, 690, 692, 694, 699, 699, 773, 773, 774, - 774, 776, 781, 781, 784, 784, 787, 790, 794, 794, - 796 -}; +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} #endif +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","INT","BIT", -"STRING","BITS","LIST","CODE","DAG","CLASS","DEF","MULTICLASS","DEFM","FIELD", -"LET","IN","SHLTOK","SRATOK","SRLTOK","STRCONCATTOK","INTVAL","ID","VARNAME", -"STRVAL","CODEFRAGMENT","'<'","'>'","'='","'?'","'{'","'}'","'['","']'","'.'", -"'('","')'","','","':'","'-'","';'","ClassID","Type","OptPrefix","OptValue", -"IDValue","Value","OptVarName","DagArgListNE","DagArgList","RBitList","BitList", -"OptBitList","ValueList","ValueListNE","Declaration","BodyItem","BodyList","Body", -"SubClassRef","ClassListNE","ClassList","DeclListNE","TemplateArgList","OptTemplateArgList", -"OptID","ObjectName","ClassName","DefName","ObjectBody","@1","ClassInst","@2", -"@3","DefInst","MultiClassDef","MultiClassBody","MultiClassName","MultiClassInst", -"@4","@5","DefMInst","@6","Object","LETItem","LETList","LETCommand","@7","ObjectList", -"File", NULL -}; #endif -static const short yyr1[] = { 0, - 41, 42, 42, 42, 42, 42, 42, 42, 42, 43, - 43, 44, 44, 45, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 47, 47, 48, 48, 49, 49, 50, 50, 50, 50, - 50, 50, 51, 52, 52, 53, 53, 54, 54, 55, - 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, - 61, 61, 62, 62, 63, 64, 64, 65, 65, 66, - 67, 68, 70, 69, 72, 73, 71, 74, 75, 76, - 76, 77, 79, 80, 78, 82, 81, 83, 83, 83, - 83, 84, 85, 85, 87, 86, 83, 83, 88, 88, - 89 +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 27 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 204 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 41 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 102 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 188 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 280 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 35, 36, 2, 2, 37, 39, 34, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 38, 40, + 26, 28, 27, 29, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 32, 2, 33, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 30, 2, 31, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25 }; -static const short yyr2[] = { 0, - 1, 1, 1, 4, 1, 4, 1, 1, 1, 0, - 1, 0, 2, 1, 1, 1, 1, 1, 1, 3, - 4, 4, 3, 3, 4, 4, 6, 6, 6, 6, - 0, 2, 2, 4, 0, 1, 1, 3, 2, 3, - 5, 4, 1, 0, 3, 0, 1, 1, 3, 4, - 2, 6, 0, 2, 1, 3, 1, 4, 1, 3, - 0, 2, 1, 3, 3, 0, 1, 1, 0, 1, - 1, 1, 0, 3, 0, 0, 6, 3, 1, 1, - 2, 1, 0, 0, 8, 0, 6, 1, 1, 1, - 1, 4, 1, 3, 0, 4, 4, 2, 1, 2, - 1 +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 14, 16, 21, 23, + 25, 27, 28, 30, 31, 34, 36, 38, 40, 42, + 44, 46, 50, 55, 60, 64, 68, 73, 78, 85, + 92, 99, 106, 107, 110, 113, 118, 119, 121, 123, + 127, 130, 134, 140, 145, 147, 148, 152, 153, 155, + 157, 161, 166, 169, 176, 177, 180, 182, 186, 188, + 193, 195, 199, 200, 203, 205, 209, 213, 214, 216, + 218, 219, 221, 223, 225, 226, 230, 231, 232, 239, + 243, 245, 247, 250, 252, 253, 254, 263, 264, 271, + 273, 275, 277, 279, 284, 286, 290, 291, 296, 301, + 304, 306, 309 }; -static const short yydefact[] = { 0, - 69, 69, 0, 0, 95, 88, 89, 90, 91, 99, - 0, 101, 68, 70, 71, 75, 72, 61, 82, 83, - 86, 0, 0, 98, 100, 66, 0, 73, 78, 66, - 0, 44, 93, 0, 0, 10, 67, 76, 1, 57, - 59, 62, 0, 84, 0, 0, 0, 96, 0, 97, - 11, 0, 63, 0, 61, 0, 0, 53, 55, 74, - 0, 0, 37, 43, 0, 0, 94, 5, 3, 2, - 0, 0, 7, 8, 9, 0, 65, 10, 77, 0, - 0, 0, 0, 16, 14, 17, 18, 19, 46, 46, - 0, 15, 48, 0, 60, 10, 0, 87, 39, 0, - 0, 45, 92, 0, 0, 12, 64, 0, 0, 0, - 0, 0, 0, 47, 0, 14, 35, 0, 0, 0, - 58, 0, 0, 56, 0, 54, 79, 80, 0, 38, - 40, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 20, 23, 31, 36, 0, 0, 0, 24, 49, 44, - 51, 85, 81, 42, 0, 4, 6, 13, 0, 0, - 0, 0, 21, 0, 33, 0, 25, 22, 26, 0, - 41, 0, 0, 0, 0, 32, 31, 0, 27, 28, - 29, 30, 34, 0, 52, 0, 0, 0 +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 90, 0, -1, 22, -1, 5, -1, 4, -1, 6, + 26, 21, 27, -1, 3, -1, 7, 26, 43, 27, + -1, 8, -1, 9, -1, 42, -1, -1, 14, -1, + -1, 28, 47, -1, 22, -1, 46, -1, 21, -1, + 24, -1, 25, -1, 29, -1, 30, 54, 31, -1, + 22, 26, 55, 27, -1, 47, 30, 52, 31, -1, + 32, 54, 33, -1, 47, 34, 22, -1, 35, 46, + 50, 36, -1, 47, 32, 52, 33, -1, 17, 35, + 47, 37, 47, 36, -1, 18, 35, 47, 37, 47, + 36, -1, 19, 35, 47, 37, 47, 36, -1, 20, + 35, 47, 37, 47, 36, -1, -1, 38, 23, -1, + 47, 48, -1, 49, 37, 47, 48, -1, -1, 49, + -1, 21, -1, 21, 39, 21, -1, 21, 21, -1, + 51, 37, 21, -1, 51, 37, 21, 39, 21, -1, + 51, 37, 21, 21, -1, 51, -1, -1, 30, 52, + 31, -1, -1, 55, -1, 47, -1, 55, 37, 47, + -1, 44, 43, 22, 45, -1, 56, 40, -1, 15, + 22, 53, 28, 47, 40, -1, -1, 58, 57, -1, + 40, -1, 30, 58, 31, -1, 42, -1, 42, 26, + 55, 27, -1, 60, -1, 61, 37, 60, -1, -1, + 38, 61, -1, 56, -1, 63, 37, 56, -1, 26, + 63, 27, -1, -1, 64, -1, 22, -1, -1, 66, + -1, 67, -1, 67, -1, -1, 62, 71, 59, -1, + -1, -1, 10, 68, 73, 65, 74, 70, -1, 11, + 69, 70, -1, 75, -1, 76, -1, 77, 76, -1, + 22, -1, -1, -1, 12, 78, 80, 65, 81, 30, + 77, 31, -1, -1, 13, 22, 83, 38, 60, 40, + -1, 72, -1, 75, -1, 79, -1, 82, -1, 22, + 53, 28, 47, -1, 85, -1, 86, 37, 85, -1, + -1, 15, 88, 86, 16, -1, 87, 30, 89, 31, + -1, 87, 84, -1, 84, -1, 89, 84, -1, 89, + -1 }; -static const short yydefgoto[] = { 40, - 76, 52, 135, 92, 93, 165, 144, 145, 64, 65, - 47, 113, 114, 53, 126, 96, 60, 41, 42, 28, - 54, 37, 38, 14, 15, 16, 18, 29, 43, 6, - 26, 55, 7, 128, 129, 20, 8, 30, 61, 9, - 31, 10, 33, 34, 11, 22, 12, 186 +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 246, 246, 268, 270, 272, 274, 276, 278, 280, + 282, 286, 286, 288, 288, 290, 313, 315, 317, 320, + 323, 325, 338, 366, 373, 376, 383, 386, 394, 396, + 398, 400, 404, 407, 411, 416, 422, 425, 428, 431, + 444, 458, 460, 473, 489, 491, 491, 495, 497, 501, + 504, 508, 525, 527, 533, 533, 534, 534, 536, 538, + 542, 547, 552, 555, 559, 562, 567, 568, 568, 570, + 570, 572, 579, 597, 622, 622, 641, 643, 641, 649, + 659, 673, 676, 680, 691, 693, 691, 700, 700, 774, + 774, 775, 775, 777, 782, 782, 785, 785, 788, 791, + 795, 795, 797 }; +#endif -static const short yypact[] = { 129, - 3, 3, 11, 19,-32768,-32768,-32768,-32768,-32768,-32768, - 2, 129,-32768,-32768,-32768,-32768,-32768, 29,-32768,-32768, --32768, 24, 129,-32768,-32768, 43, 31,-32768,-32768, 43, - 40, 50,-32768, -6, -4, 69,-32768,-32768,-32768, 59, --32768, 61, 10,-32768, 31, 81, 78,-32768, 24,-32768, --32768, 15,-32768, 12, 29, 41, 31,-32768,-32768,-32768, - 84, 68, 8, 83, 87, 41,-32768,-32768,-32768,-32768, - 111, 120,-32768,-32768,-32768, 126,-32768, 69,-32768, 114, - 115, 116, 117,-32768, 127,-32768,-32768,-32768, 41, 41, - 132,-32768, 113, 27,-32768, 60, 144,-32768,-32768, 135, - 136,-32768, 113, 137, 15, 131,-32768, 41, 41, 41, - 41, 41, 130, 123, 133,-32768, 41, 81, 81, 140, --32768, 41, 141,-32768, 124,-32768,-32768,-32768, 5,-32768, - 9, 138, 142, 41,-32768, 67, 73, 79, 85, 45, --32768,-32768, 54, 134, 139, 143, 145,-32768, 113, 50, --32768,-32768,-32768,-32768, 146,-32768,-32768, 113, 41, 41, - 41, 41,-32768, 147,-32768, 41,-32768,-32768,-32768, 148, --32768, 91, 94, 99, 102,-32768, 54, 41,-32768,-32768, --32768,-32768,-32768, 47,-32768, 168, 172,-32768 +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "INT", "BIT", "STRING", "BITS", "LIST", + "CODE", "DAG", "CLASS", "DEF", "MULTICLASS", "DEFM", "FIELD", "LET", + "IN", "SHLTOK", "SRATOK", "SRLTOK", "STRCONCATTOK", "INTVAL", "ID", + "VARNAME", "STRVAL", "CODEFRAGMENT", "'<'", "'>'", "'='", "'?'", "'{'", + "'}'", "'['", "']'", "'.'", "'('", "')'", "','", "':'", "'-'", "';'", + "$accept", "ClassID", "Type", "OptPrefix", "OptValue", "IDValue", + "Value", "OptVarName", "DagArgListNE", "DagArgList", "RBitList", + "BitList", "OptBitList", "ValueList", "ValueListNE", "Declaration", + "BodyItem", "BodyList", "Body", "SubClassRef", "ClassListNE", + "ClassList", "DeclListNE", "TemplateArgList", "OptTemplateArgList", + "OptID", "ObjectName", "ClassName", "DefName", "ObjectBody", "@1", + "ClassInst", "@2", "@3", "DefInst", "MultiClassDef", "MultiClassBody", + "MultiClassName", "MultiClassInst", "@4", "@5", "DefMInst", "@6", + "Object", "LETItem", "LETList", "LETCommand", "@7", "ObjectList", "File", 0 }; +#endif -static const short yypgoto[] = { -50, - 72,-32768,-32768, 82, -66, 4,-32768,-32768,-32768, -29, - 30, 89, -55, -44,-32768,-32768,-32768, -19,-32768,-32768, --32768,-32768, 152,-32768, 181,-32768,-32768, 149,-32768,-32768, --32768,-32768, -94, 55,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -7, 150,-32768,-32768,-32768, 162,-32768 +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 60, 62, 61, 63, + 123, 125, 91, 93, 46, 40, 41, 44, 58, 45, + 59 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 41, 42, 43, 43, 43, 43, 43, 43, 43, + 43, 44, 44, 45, 45, 46, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, + 51, 51, 51, 51, 52, 53, 53, 54, 54, 55, + 55, 56, 57, 57, 58, 58, 59, 59, 60, 60, + 61, 61, 62, 62, 63, 63, 64, 65, 65, 66, + 66, 67, 68, 69, 71, 70, 73, 74, 72, 75, + 76, 77, 77, 78, 80, 81, 79, 83, 82, 84, + 84, 84, 84, 85, 86, 86, 88, 87, 84, 84, + 89, 89, 90 }; +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 4, 1, 4, 1, 1, + 1, 0, 1, 0, 2, 1, 1, 1, 1, 1, + 1, 3, 4, 4, 3, 3, 4, 4, 6, 6, + 6, 6, 0, 2, 2, 4, 0, 1, 1, 3, + 2, 3, 5, 4, 1, 0, 3, 0, 1, 1, + 3, 4, 2, 6, 0, 2, 1, 3, 1, 4, + 1, 3, 0, 2, 1, 3, 3, 0, 1, 1, + 0, 1, 1, 1, 0, 3, 0, 0, 6, 3, + 1, 1, 2, 1, 0, 0, 8, 0, 6, 1, + 1, 1, 1, 4, 1, 3, 0, 4, 4, 2, + 1, 2, 1 +}; -#define YYLAST 204 - - -static const short yytable[] = { 103, - 94, 75, 127, 24, 25, 1, 2, 3, 4, 48, - 5, 1, 2, 3, 4, 2, 5, 68, 69, 70, - 71, 72, 73, 74, 13, 62, 50, 25, 99, 154, - 49, 23, 19, 107, 127, 152, 39, 95, 77, 58, - 21, 136, 137, 138, 139, 32, 100, 155, 78, 59, - 143, 125, 39, 121, 75, 149, 140, 80, 81, 82, - 83, 84, 85, 122, 86, 87, 27, 158, 36, 88, - 89, 163, 90, 51, 123, 91, 118, 45, 119, 46, - 120, 122, 51, 118, 56, 119, 185, 120, 146, 147, - 124, 164, 172, 173, 174, 175, 118, 57, 119, 177, - 120, 63, 118, 159, 119, 66, 120, 98, 118, 160, - 119, 184, 120, 97, 118, 161, 119, 102, 120, 101, - 118, 162, 119, 118, 120, 119, 179, 120, 118, 180, - 119, 118, 120, 119, 181, 120, 104, 182, 1, 2, - 3, 4, 118, 5, 119, 105, 120, 106, 108, 109, - 110, 111, 112, 116, 2, 130, 131, 132, 134, 122, - 141, 148, 150, 151, 156, 142, 171, 187, 157, 176, - 166, 188, 117, 168, 167, 178, 133, 169, 115, 170, - 183, 44, 17, 153, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, - 0, 0, 0, 79 +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 70, 70, 0, 0, 96, 89, 90, 91, 92, + 100, 0, 102, 0, 69, 71, 72, 76, 73, 62, + 83, 84, 87, 0, 0, 99, 101, 1, 67, 0, + 74, 79, 67, 0, 45, 94, 0, 0, 11, 68, + 77, 2, 58, 60, 63, 0, 85, 0, 0, 0, + 97, 0, 98, 12, 0, 64, 0, 62, 0, 0, + 54, 56, 75, 0, 0, 38, 44, 0, 0, 95, + 6, 4, 3, 0, 0, 8, 9, 10, 0, 66, + 11, 78, 0, 0, 0, 0, 17, 15, 18, 19, + 20, 47, 47, 0, 16, 49, 0, 61, 11, 0, + 88, 40, 0, 0, 46, 93, 0, 0, 13, 65, + 0, 0, 0, 0, 0, 0, 48, 0, 15, 36, + 0, 0, 0, 59, 0, 0, 57, 0, 55, 80, + 81, 0, 39, 41, 0, 0, 0, 51, 0, 0, + 0, 0, 0, 21, 24, 32, 37, 0, 0, 0, + 25, 50, 45, 52, 86, 82, 43, 0, 5, 7, + 14, 0, 0, 0, 0, 22, 0, 34, 0, 26, + 23, 27, 0, 42, 0, 0, 0, 0, 33, 32, + 0, 28, 29, 30, 31, 35, 0, 53 }; -static const short yycheck[] = { 66, - 56, 52, 97, 11, 12, 10, 11, 12, 13, 16, - 15, 10, 11, 12, 13, 11, 15, 3, 4, 5, - 6, 7, 8, 9, 22, 45, 31, 35, 21, 21, - 37, 30, 22, 78, 129, 31, 22, 57, 27, 30, - 22, 108, 109, 110, 111, 22, 39, 39, 37, 40, - 117, 96, 22, 27, 105, 122, 112, 17, 18, 19, - 20, 21, 22, 37, 24, 25, 38, 134, 26, 29, - 30, 27, 32, 14, 15, 35, 30, 38, 32, 30, - 34, 37, 14, 30, 26, 32, 40, 34, 118, 119, - 31, 38, 159, 160, 161, 162, 30, 37, 32, 166, - 34, 21, 30, 37, 32, 28, 34, 40, 30, 37, - 32, 178, 34, 30, 30, 37, 32, 31, 34, 37, - 30, 37, 32, 30, 34, 32, 36, 34, 30, 36, - 32, 30, 34, 32, 36, 34, 26, 36, 10, 11, - 12, 13, 30, 15, 32, 26, 34, 22, 35, 35, - 35, 35, 26, 22, 11, 21, 21, 21, 28, 37, - 31, 22, 22, 40, 27, 33, 21, 0, 27, 23, - 37, 0, 91, 31, 36, 28, 105, 33, 90, 150, - 177, 30, 2, 129, 23, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, - -1, -1, -1, 55 +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 42, 78, 54, 137, 94, 95, 167, 146, 147, + 66, 67, 49, 115, 116, 55, 128, 98, 62, 43, + 44, 30, 56, 39, 40, 15, 16, 17, 19, 31, + 45, 6, 28, 57, 7, 130, 131, 21, 8, 32, + 63, 9, 33, 10, 35, 36, 11, 23, 12, 13 }; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/bison.simple" -/* This file comes from bison-1.28. */ -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -97 +static const yytype_int16 yypact[] = +{ + 129, 3, 3, 11, 19, -97, -97, -97, -97, -97, + -97, 2, 129, 48, -97, -97, -97, -97, -97, 29, + -97, -97, -97, 31, 129, -97, -97, -97, 43, 56, + -97, -97, 43, 42, 53, -97, -6, -4, 71, -97, + -97, -97, 72, -97, 65, 9, -97, 56, 87, 78, + -97, 31, -97, -97, 15, -97, 13, 29, 41, 56, + -97, -97, -97, 84, 80, 7, 81, 106, 41, -97, + -97, -97, -97, 120, 122, -97, -97, -97, 127, -97, + 71, -97, 115, 116, 117, 118, -97, 128, -97, -97, + -97, 41, 41, 133, -97, 113, 27, -97, 60, 145, + -97, -97, 136, 137, -97, 113, 138, 15, 132, -97, + 41, 41, 41, 41, 41, 130, 125, 131, -97, 41, + 87, 87, 141, -97, 41, 143, -97, 126, -97, -97, + -97, 5, -97, 8, 140, 142, 41, -97, 67, 73, + 79, 85, 45, -97, -97, 54, 134, 139, 146, 135, + -97, 113, 53, -97, -97, -97, -97, 149, -97, -97, + 113, 41, 41, 41, 41, -97, 150, -97, 41, -97, + -97, -97, 144, -97, 91, 94, 99, 102, -97, 54, + 41, -97, -97, -97, -97, -97, 47, -97 +}; - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -97, -52, 69, -97, -97, 86, -68, -5, -97, -97, + -97, -31, 26, 88, -57, -46, -97, -97, -97, -21, + -97, -97, -97, -97, 151, -97, 179, -97, -97, 147, + -97, -97, -97, -97, -96, 51, -97, -97, -97, -97, + -97, -97, -97, -7, 148, -97, -97, -97, 160, -97 +}; - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 105, 96, 77, 129, 25, 26, 1, 2, 3, 4, + 50, 5, 1, 2, 3, 4, 2, 5, 70, 71, + 72, 73, 74, 75, 76, 14, 64, 52, 101, 156, + 26, 51, 24, 20, 109, 129, 154, 41, 97, 60, + 79, 22, 138, 139, 140, 141, 102, 157, 27, 61, + 80, 145, 127, 34, 123, 77, 151, 142, 82, 83, + 84, 85, 86, 87, 124, 88, 89, 29, 160, 38, + 90, 91, 165, 92, 53, 125, 93, 120, 41, 121, + 47, 122, 124, 48, 120, 53, 121, 187, 122, 148, + 149, 126, 166, 174, 175, 176, 177, 120, 58, 121, + 179, 122, 59, 120, 161, 121, 68, 122, 65, 120, + 162, 121, 186, 122, 99, 120, 163, 121, 103, 122, + 100, 120, 164, 121, 120, 122, 121, 181, 122, 120, + 182, 121, 120, 122, 121, 183, 122, 104, 184, 1, + 2, 3, 4, 120, 5, 121, 106, 122, 107, 108, + 110, 111, 112, 113, 114, 118, 2, 132, 133, 134, + 136, 143, 124, 150, 144, 152, 153, 158, 171, 159, + 173, 168, 180, 178, 185, 169, 135, 170, 172, 119, + 117, 18, 155, 46, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, + 0, 0, 0, 0, 81 +}; - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include -#endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ -#endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif +static const yytype_int16 yycheck[] = +{ + 68, 58, 54, 99, 11, 12, 10, 11, 12, 13, + 16, 15, 10, 11, 12, 13, 11, 15, 3, 4, + 5, 6, 7, 8, 9, 22, 47, 31, 21, 21, + 37, 37, 30, 22, 80, 131, 31, 22, 59, 30, + 27, 22, 110, 111, 112, 113, 39, 39, 0, 40, + 37, 119, 98, 22, 27, 107, 124, 114, 17, 18, + 19, 20, 21, 22, 37, 24, 25, 38, 136, 26, + 29, 30, 27, 32, 14, 15, 35, 30, 22, 32, + 38, 34, 37, 30, 30, 14, 32, 40, 34, 120, + 121, 31, 38, 161, 162, 163, 164, 30, 26, 32, + 168, 34, 37, 30, 37, 32, 28, 34, 21, 30, + 37, 32, 180, 34, 30, 30, 37, 32, 37, 34, + 40, 30, 37, 32, 30, 34, 32, 36, 34, 30, + 36, 32, 30, 34, 32, 36, 34, 31, 36, 10, + 11, 12, 13, 30, 15, 32, 26, 34, 26, 22, + 35, 35, 35, 35, 26, 22, 11, 21, 21, 21, + 28, 31, 37, 22, 33, 22, 40, 27, 33, 27, + 21, 37, 28, 23, 179, 36, 107, 31, 152, 93, + 92, 2, 131, 32, 24, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, + -1, -1, -1, -1, 57 +}; -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 10, 11, 12, 13, 15, 72, 75, 79, 82, + 84, 87, 89, 90, 22, 66, 67, 68, 67, 69, + 22, 78, 22, 88, 30, 84, 84, 0, 73, 38, + 62, 70, 80, 83, 22, 85, 86, 89, 26, 64, + 65, 22, 42, 60, 61, 71, 65, 38, 30, 53, + 16, 37, 31, 14, 44, 56, 63, 74, 26, 37, + 30, 40, 59, 81, 60, 21, 51, 52, 28, 85, + 3, 4, 5, 6, 7, 8, 9, 42, 43, 27, + 37, 70, 17, 18, 19, 20, 21, 22, 24, 25, + 29, 30, 32, 35, 46, 47, 55, 60, 58, 30, + 40, 21, 39, 37, 31, 47, 26, 26, 22, 56, + 35, 35, 35, 35, 26, 54, 55, 54, 22, 46, + 30, 32, 34, 27, 37, 15, 31, 56, 57, 75, + 76, 77, 21, 21, 21, 43, 28, 45, 47, 47, + 47, 47, 55, 31, 33, 47, 49, 50, 52, 52, + 22, 47, 22, 40, 31, 76, 21, 39, 27, 27, + 47, 37, 37, 37, 37, 27, 38, 48, 37, 36, + 31, 33, 53, 21, 47, 47, 47, 47, 23, 47, + 28, 36, 36, 36, 36, 48, 47, 40 +}; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 +#define YYEMPTY (-2) #define YYEOF 0 + #define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ + #define YYFAIL goto yyerrlab + #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ + +#define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ goto yybackup; \ } \ else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + #define YYTERROR 1 #define YYERRCODE 256 -#ifndef YYPURE -#define YYLEX yylex() + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) #endif -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif #endif -#else /* not YYLSP_NEEDED */ + + +/* YYLEX -- calling `yylex' with the right arguments. */ + #ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) +# define YYLEX yylex (YYLEX_PARAM) #else -#define YYLEX yylex(&yylval) +# define YYLEX yylex () #endif -#endif /* not YYLSP_NEEDED */ + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; #endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + -/* If nonreentrant, generate the variables here */ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); -#ifndef YYPURE + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; #endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; #endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) -/* YYINITDEPTH indicates the initial size of the parser's stacks */ +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + +/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -#define YYINITDEPTH 200 +# define YYINITDEPTH 200 #endif -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +# define YYMAXDEPTH 10000 #endif + -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { - register char *f = from; - register char *t = to; - register int i = count; + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; - while (i-- > 0) - *t++ = *f++; + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } +#endif /* YYERROR_VERBOSE */ + -#else /* __cplusplus */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else static void -__yy_memcpy (char *to, char *from, unsigned int count) +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif { - register char *t = to; - register char *f = from; - register int i = count; + YYUSE (yyvaluep); - while (i-- > 0) - *t++ = *f++; -} + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); -#endif -#endif + switch (yytype) + { + + default: + break; + } +} -#line 217 "/usr/share/bison.simple" -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ +/* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); #else -int yyparse (void); +int yyparse (); #endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); #endif +#endif /* ! YYPARSE_PARAM */ + -int -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ +/* The look-ahead symbol. */ +int yychar; - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; +/* Number of syntax errors so far. */ +int yynerrs; -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) #else -#define YYPOPSTACK (yyvsp--, yyssp--) +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; #endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; #endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. - int yylen; + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; @@ -820,670 +1558,665 @@ yyparse(YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss - 1; + yyssp = yyss; yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: + goto yysetstate; - *++yyssp = yystate; +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif + yysetstate: + *yyssp = yystate; + if (yyss + yystacksize - 1 <= yyssp) + { /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) + if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif #endif /* no yyoverflow */ - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - if (yyssp >= yyss + yystacksize - 1) + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; - yybackup: -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ +/*-----------. +| yybackup. | +`-----------*/ +yybackup: - /* First try to decide what to do without reference to lookahead token. */ + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yyn == YYFLAG) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ + /* Not known => get a look-ahead token if don't already have one. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ + if (yychar <= YYEOF) { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) + if (yyn <= 0) { - if (yyn == YYFLAG) + if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } - else if (yyn == 0) - goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; - /* Shift the lookahead token. */ + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the token being shifted unless it is eof. */ + /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; + yystate = yyn; *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; goto yynewstate; -/* Do the default action for the current state. */ -yydefault: +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; + goto yyreduce; -/* Do a reduction. yyn is the number of a rule to reduce with. */ + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: + /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ -#if YYDEBUG != 0 - if (yydebug) - { - int i; + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; - switch (yyn) { - -case 1: -#line 245 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 246 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { if (CurDefmPrefix) { // If CurDefmPrefix is set, we're parsing a defm, which means that this is // actually the name of a multiclass. - MultiClass *MC = MultiClasses[*yyvsp[0].StrVal]; + MultiClass *MC = MultiClasses[*(yyvsp[(1) - (1)].StrVal)]; if (MC == 0) { - err() << "Couldn't find class '" << *yyvsp[0].StrVal << "'!\n"; + err() << "Couldn't find class '" << *(yyvsp[(1) - (1)].StrVal) << "'!\n"; exit(1); } - yyval.Rec = &MC->Rec; + (yyval.Rec) = &MC->Rec; } else { - yyval.Rec = Records.getClass(*yyvsp[0].StrVal); + (yyval.Rec) = Records.getClass(*(yyvsp[(1) - (1)].StrVal)); } - if (yyval.Rec == 0) { - err() << "Couldn't find class '" << *yyvsp[0].StrVal << "'!\n"; + if ((yyval.Rec) == 0) { + err() << "Couldn't find class '" << *(yyvsp[(1) - (1)].StrVal) << "'!\n"; exit(1); } - delete yyvsp[0].StrVal; - ; - break;} -case 2: -#line 267 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // string type - yyval.Ty = new StringRecTy(); - ; - break;} -case 3: -#line 269 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // bit type - yyval.Ty = new BitRecTy(); - ; - break;} -case 4: -#line 271 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // bits type - yyval.Ty = new BitsRecTy(yyvsp[-1].IntVal); - ; - break;} -case 5: -#line 273 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // int type - yyval.Ty = new IntRecTy(); - ; - break;} -case 6: -#line 275 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // list type - yyval.Ty = new ListRecTy(yyvsp[-1].Ty); - ; - break;} -case 7: -#line 277 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // code type - yyval.Ty = new CodeRecTy(); - ; - break;} -case 8: -#line 279 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // dag type - yyval.Ty = new DagRecTy(); - ; - break;} -case 9: -#line 281 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ // Record Type - yyval.Ty = new RecordRecTy(yyvsp[0].Rec); - ; - break;} -case 10: -#line 285 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.IntVal = 0; ; - break;} -case 11: -#line 285 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.IntVal = 1; ; - break;} -case 12: -#line 287 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.Initializer = 0; ; - break;} -case 13: -#line 287 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.Initializer = yyvsp[0].Initializer; ; - break;} -case 14: -#line 289 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - if (const RecordVal *RV = (CurRec ? CurRec->getValue(*yyvsp[0].StrVal) : 0)) { - yyval.Initializer = new VarInit(*yyvsp[0].StrVal, RV->getType()); - } else if (CurRec && CurRec->isTemplateArg(CurRec->getName()+":"+*yyvsp[0].StrVal)) { - const RecordVal *RV = CurRec->getValue(CurRec->getName()+":"+*yyvsp[0].StrVal); + delete (yyvsp[(1) - (1)].StrVal); + ;} + break; + + case 3: +#line 268 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // string type + (yyval.Ty) = new StringRecTy(); + ;} + break; + + case 4: +#line 270 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // bit type + (yyval.Ty) = new BitRecTy(); + ;} + break; + + case 5: +#line 272 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // bits type + (yyval.Ty) = new BitsRecTy((yyvsp[(3) - (4)].IntVal)); + ;} + break; + + case 6: +#line 274 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // int type + (yyval.Ty) = new IntRecTy(); + ;} + break; + + case 7: +#line 276 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // list type + (yyval.Ty) = new ListRecTy((yyvsp[(3) - (4)].Ty)); + ;} + break; + + case 8: +#line 278 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // code type + (yyval.Ty) = new CodeRecTy(); + ;} + break; + + case 9: +#line 280 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // dag type + (yyval.Ty) = new DagRecTy(); + ;} + break; + + case 10: +#line 282 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // Record Type + (yyval.Ty) = new RecordRecTy((yyvsp[(1) - (1)].Rec)); + ;} + break; + + case 11: +#line 286 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.IntVal) = 0; ;} + break; + + case 12: +#line 286 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.IntVal) = 1; ;} + break; + + case 13: +#line 288 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.Initializer) = 0; ;} + break; + + case 14: +#line 288 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.Initializer) = (yyvsp[(2) - (2)].Initializer); ;} + break; + + case 15: +#line 290 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + if (const RecordVal *RV = (CurRec ? CurRec->getValue(*(yyvsp[(1) - (1)].StrVal)) : 0)) { + (yyval.Initializer) = new VarInit(*(yyvsp[(1) - (1)].StrVal), RV->getType()); + } else if (CurRec && CurRec->isTemplateArg(CurRec->getName()+":"+*(yyvsp[(1) - (1)].StrVal))) { + const RecordVal *RV = CurRec->getValue(CurRec->getName()+":"+*(yyvsp[(1) - (1)].StrVal)); assert(RV && "Template arg doesn't exist??"); - yyval.Initializer = new VarInit(CurRec->getName()+":"+*yyvsp[0].StrVal, RV->getType()); + (yyval.Initializer) = new VarInit(CurRec->getName()+":"+*(yyvsp[(1) - (1)].StrVal), RV->getType()); } else if (CurMultiClass && - CurMultiClass->Rec.isTemplateArg(CurMultiClass->Rec.getName()+"::"+*yyvsp[0].StrVal)) { - std::string Name = CurMultiClass->Rec.getName()+"::"+*yyvsp[0].StrVal; + CurMultiClass->Rec.isTemplateArg(CurMultiClass->Rec.getName()+"::"+*(yyvsp[(1) - (1)].StrVal))) { + std::string Name = CurMultiClass->Rec.getName()+"::"+*(yyvsp[(1) - (1)].StrVal); const RecordVal *RV = CurMultiClass->Rec.getValue(Name); assert(RV && "Template arg doesn't exist??"); - yyval.Initializer = new VarInit(Name, RV->getType()); - } else if (Record *D = Records.getDef(*yyvsp[0].StrVal)) { - yyval.Initializer = new DefInit(D); + (yyval.Initializer) = new VarInit(Name, RV->getType()); + } else if (Record *D = Records.getDef(*(yyvsp[(1) - (1)].StrVal))) { + (yyval.Initializer) = new DefInit(D); } else { - err() << "Variable not defined: '" << *yyvsp[0].StrVal << "'!\n"; + err() << "Variable not defined: '" << *(yyvsp[(1) - (1)].StrVal) << "'!\n"; exit(1); } - delete yyvsp[0].StrVal; -; - break;} -case 15: -#line 312 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = yyvsp[0].Initializer; - ; - break;} -case 16: -#line 314 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new IntInit(yyvsp[0].IntVal); - ; - break;} -case 17: -#line 316 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new StringInit(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; - ; - break;} -case 18: -#line 319 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new CodeInit(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; - ; - break;} -case 19: -#line 322 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new UnsetInit(); - ; - break;} -case 20: -#line 324 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - BitsInit *Init = new BitsInit(yyvsp[-1].FieldList->size()); - for (unsigned i = 0, e = yyvsp[-1].FieldList->size(); i != e; ++i) { - struct Init *Bit = (*yyvsp[-1].FieldList)[i]->convertInitializerTo(new BitRecTy()); + delete (yyvsp[(1) - (1)].StrVal); +;} + break; + + case 16: +#line 313 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (yyvsp[(1) - (1)].Initializer); + ;} + break; + + case 17: +#line 315 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new IntInit((yyvsp[(1) - (1)].IntVal)); + ;} + break; + + case 18: +#line 317 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new StringInit(*(yyvsp[(1) - (1)].StrVal)); + delete (yyvsp[(1) - (1)].StrVal); + ;} + break; + + case 19: +#line 320 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new CodeInit(*(yyvsp[(1) - (1)].StrVal)); + delete (yyvsp[(1) - (1)].StrVal); + ;} + break; + + case 20: +#line 323 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new UnsetInit(); + ;} + break; + + case 21: +#line 325 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + BitsInit *Init = new BitsInit((yyvsp[(2) - (3)].FieldList)->size()); + for (unsigned i = 0, e = (yyvsp[(2) - (3)].FieldList)->size(); i != e; ++i) { + struct Init *Bit = (*(yyvsp[(2) - (3)].FieldList))[i]->convertInitializerTo(new BitRecTy()); if (Bit == 0) { - err() << "Element #" << i << " (" << *(*yyvsp[-1].FieldList)[i] + err() << "Element #" << i << " (" << *(*(yyvsp[(2) - (3)].FieldList))[i] << ") is not convertable to a bit!\n"; exit(1); } - Init->setBit(yyvsp[-1].FieldList->size()-i-1, Bit); + Init->setBit((yyvsp[(2) - (3)].FieldList)->size()-i-1, Bit); } - yyval.Initializer = Init; - delete yyvsp[-1].FieldList; - ; - break;} -case 21: -#line 337 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + (yyval.Initializer) = Init; + delete (yyvsp[(2) - (3)].FieldList); + ;} + break; + + case 22: +#line 338 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // This is a CLASS expression. This is supposed to synthesize // a new anonymous definition, deriving from CLASS with no // body. - Record *Class = Records.getClass(*yyvsp[-3].StrVal); + Record *Class = Records.getClass(*(yyvsp[(1) - (4)].StrVal)); if (!Class) { - err() << "Expected a class, got '" << *yyvsp[-3].StrVal << "'!\n"; + err() << "Expected a class, got '" << *(yyvsp[(1) - (4)].StrVal) << "'!\n"; exit(1); } - delete yyvsp[-3].StrVal; + delete (yyvsp[(1) - (4)].StrVal); static unsigned AnonCounter = 0; Record *OldRec = CurRec; // Save CurRec. // Create the new record, set it as CurRec temporarily. CurRec = new Record("anonymous.val."+utostr(AnonCounter++)); - addSubClass(Class, *yyvsp[-1].FieldList); // Add info about the subclass to CurRec. - delete yyvsp[-1].FieldList; // Free up the template args. + addSubClass(Class, *(yyvsp[(3) - (4)].FieldList)); // Add info about the subclass to CurRec. + delete (yyvsp[(3) - (4)].FieldList); // Free up the template args. CurRec->resolveReferences(); Records.addDef(CurRec); // The result of the expression is a reference to the new record. - yyval.Initializer = new DefInit(CurRec); + (yyval.Initializer) = new DefInit(CurRec); // Restore the old CurRec CurRec = OldRec; - ; - break;} -case 22: -#line 365 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = yyvsp[-3].Initializer->convertInitializerBitRange(*yyvsp[-1].BitList); - if (yyval.Initializer == 0) { - err() << "Invalid bit range for value '" << *yyvsp[-3].Initializer << "'!\n"; + ;} + break; + + case 23: +#line 366 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (yyvsp[(1) - (4)].Initializer)->convertInitializerBitRange(*(yyvsp[(3) - (4)].BitList)); + if ((yyval.Initializer) == 0) { + err() << "Invalid bit range for value '" << *(yyvsp[(1) - (4)].Initializer) << "'!\n"; exit(1); } - delete yyvsp[-1].BitList; - ; - break;} -case 23: -#line 372 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new ListInit(*yyvsp[-1].FieldList); - delete yyvsp[-1].FieldList; - ; - break;} -case 24: -#line 375 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - if (!yyvsp[-2].Initializer->getFieldType(*yyvsp[0].StrVal)) { - err() << "Cannot access field '" << *yyvsp[0].StrVal << "' of value '" << *yyvsp[-2].Initializer << "!\n"; + delete (yyvsp[(3) - (4)].BitList); + ;} + break; + + case 24: +#line 373 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new ListInit(*(yyvsp[(2) - (3)].FieldList)); + delete (yyvsp[(2) - (3)].FieldList); + ;} + break; + + case 25: +#line 376 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + if (!(yyvsp[(1) - (3)].Initializer)->getFieldType(*(yyvsp[(3) - (3)].StrVal))) { + err() << "Cannot access field '" << *(yyvsp[(3) - (3)].StrVal) << "' of value '" << *(yyvsp[(1) - (3)].Initializer) << "!\n"; exit(1); } - yyval.Initializer = new FieldInit(yyvsp[-2].Initializer, *yyvsp[0].StrVal); - delete yyvsp[0].StrVal; - ; - break;} -case 25: -#line 382 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = new DagInit(yyvsp[-2].Initializer, *yyvsp[-1].DagValueList); - delete yyvsp[-1].DagValueList; - ; - break;} -case 26: -#line 385 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - std::reverse(yyvsp[-1].BitList->begin(), yyvsp[-1].BitList->end()); - yyval.Initializer = yyvsp[-3].Initializer->convertInitListSlice(*yyvsp[-1].BitList); - if (yyval.Initializer == 0) { - err() << "Invalid list slice for value '" << *yyvsp[-3].Initializer << "'!\n"; + (yyval.Initializer) = new FieldInit((yyvsp[(1) - (3)].Initializer), *(yyvsp[(3) - (3)].StrVal)); + delete (yyvsp[(3) - (3)].StrVal); + ;} + break; + + case 26: +#line 383 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = new DagInit((yyvsp[(2) - (4)].Initializer), *(yyvsp[(3) - (4)].DagValueList)); + delete (yyvsp[(3) - (4)].DagValueList); + ;} + break; + + case 27: +#line 386 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + std::reverse((yyvsp[(3) - (4)].BitList)->begin(), (yyvsp[(3) - (4)].BitList)->end()); + (yyval.Initializer) = (yyvsp[(1) - (4)].Initializer)->convertInitListSlice(*(yyvsp[(3) - (4)].BitList)); + if ((yyval.Initializer) == 0) { + err() << "Invalid list slice for value '" << *(yyvsp[(1) - (4)].Initializer) << "'!\n"; exit(1); } - delete yyvsp[-1].BitList; - ; - break;} -case 27: -#line 393 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = (new BinOpInit(BinOpInit::SHL, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold(); - ; - break;} -case 28: -#line 395 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = (new BinOpInit(BinOpInit::SRA, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold(); - ; - break;} -case 29: -#line 397 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = (new BinOpInit(BinOpInit::SRL, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold(); - ; - break;} -case 30: -#line 399 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Initializer = (new BinOpInit(BinOpInit::STRCONCAT, yyvsp[-3].Initializer, yyvsp[-1].Initializer))->Fold(); - ; - break;} -case 31: -#line 403 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.StrVal = new std::string(); - ; - break;} -case 32: -#line 406 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.StrVal = yyvsp[0].StrVal; - ; - break;} -case 33: -#line 410 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.DagValueList = new std::vector >(); - yyval.DagValueList->push_back(std::make_pair(yyvsp[-1].Initializer, *yyvsp[0].StrVal)); - delete yyvsp[0].StrVal; - ; - break;} -case 34: -#line 415 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyvsp[-3].DagValueList->push_back(std::make_pair(yyvsp[-1].Initializer, *yyvsp[0].StrVal)); - delete yyvsp[0].StrVal; - yyval.DagValueList = yyvsp[-3].DagValueList; - ; - break;} -case 35: -#line 421 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.DagValueList = new std::vector >(); - ; - break;} -case 36: -#line 424 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.DagValueList = yyvsp[0].DagValueList; ; - break;} -case 37: -#line 427 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.BitList = new std::vector(); - yyval.BitList->push_back(yyvsp[0].IntVal); - ; - break;} -case 38: -#line 430 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - if (yyvsp[-2].IntVal < 0 || yyvsp[0].IntVal < 0) { - err() << "Invalid range: " << yyvsp[-2].IntVal << "-" << yyvsp[0].IntVal << "!\n"; + delete (yyvsp[(3) - (4)].BitList); + ;} + break; + + case 28: +#line 394 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (new BinOpInit(BinOpInit::SHL, (yyvsp[(3) - (6)].Initializer), (yyvsp[(5) - (6)].Initializer)))->Fold(); + ;} + break; + + case 29: +#line 396 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (new BinOpInit(BinOpInit::SRA, (yyvsp[(3) - (6)].Initializer), (yyvsp[(5) - (6)].Initializer)))->Fold(); + ;} + break; + + case 30: +#line 398 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (new BinOpInit(BinOpInit::SRL, (yyvsp[(3) - (6)].Initializer), (yyvsp[(5) - (6)].Initializer)))->Fold(); + ;} + break; + + case 31: +#line 400 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Initializer) = (new BinOpInit(BinOpInit::STRCONCAT, (yyvsp[(3) - (6)].Initializer), (yyvsp[(5) - (6)].Initializer)))->Fold(); + ;} + break; + + case 32: +#line 404 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.StrVal) = new std::string(); + ;} + break; + + case 33: +#line 407 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal); + ;} + break; + + case 34: +#line 411 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.DagValueList) = new std::vector >(); + (yyval.DagValueList)->push_back(std::make_pair((yyvsp[(1) - (2)].Initializer), *(yyvsp[(2) - (2)].StrVal))); + delete (yyvsp[(2) - (2)].StrVal); + ;} + break; + + case 35: +#line 416 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyvsp[(1) - (4)].DagValueList)->push_back(std::make_pair((yyvsp[(3) - (4)].Initializer), *(yyvsp[(4) - (4)].StrVal))); + delete (yyvsp[(4) - (4)].StrVal); + (yyval.DagValueList) = (yyvsp[(1) - (4)].DagValueList); + ;} + break; + + case 36: +#line 422 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.DagValueList) = new std::vector >(); + ;} + break; + + case 37: +#line 425 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.DagValueList) = (yyvsp[(1) - (1)].DagValueList); ;} + break; + + case 38: +#line 428 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.BitList) = new std::vector(); + (yyval.BitList)->push_back((yyvsp[(1) - (1)].IntVal)); + ;} + break; + + case 39: +#line 431 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + if ((yyvsp[(1) - (3)].IntVal) < 0 || (yyvsp[(3) - (3)].IntVal) < 0) { + err() << "Invalid range: " << (yyvsp[(1) - (3)].IntVal) << "-" << (yyvsp[(3) - (3)].IntVal) << "!\n"; exit(1); } - yyval.BitList = new std::vector(); - if (yyvsp[-2].IntVal < yyvsp[0].IntVal) { - for (int i = yyvsp[-2].IntVal; i <= yyvsp[0].IntVal; ++i) - yyval.BitList->push_back(i); + (yyval.BitList) = new std::vector(); + if ((yyvsp[(1) - (3)].IntVal) < (yyvsp[(3) - (3)].IntVal)) { + for (int i = (yyvsp[(1) - (3)].IntVal); i <= (yyvsp[(3) - (3)].IntVal); ++i) + (yyval.BitList)->push_back(i); } else { - for (int i = yyvsp[-2].IntVal; i >= yyvsp[0].IntVal; --i) - yyval.BitList->push_back(i); + for (int i = (yyvsp[(1) - (3)].IntVal); i >= (yyvsp[(3) - (3)].IntVal); --i) + (yyval.BitList)->push_back(i); } - ; - break;} -case 39: -#line 443 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyvsp[0].IntVal = -yyvsp[0].IntVal; - if (yyvsp[-1].IntVal < 0 || yyvsp[0].IntVal < 0) { - err() << "Invalid range: " << yyvsp[-1].IntVal << "-" << yyvsp[0].IntVal << "!\n"; + ;} + break; + + case 40: +#line 444 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyvsp[(2) - (2)].IntVal) = -(yyvsp[(2) - (2)].IntVal); + if ((yyvsp[(1) - (2)].IntVal) < 0 || (yyvsp[(2) - (2)].IntVal) < 0) { + err() << "Invalid range: " << (yyvsp[(1) - (2)].IntVal) << "-" << (yyvsp[(2) - (2)].IntVal) << "!\n"; exit(1); } - yyval.BitList = new std::vector(); - if (yyvsp[-1].IntVal < yyvsp[0].IntVal) { - for (int i = yyvsp[-1].IntVal; i <= yyvsp[0].IntVal; ++i) - yyval.BitList->push_back(i); + (yyval.BitList) = new std::vector(); + if ((yyvsp[(1) - (2)].IntVal) < (yyvsp[(2) - (2)].IntVal)) { + for (int i = (yyvsp[(1) - (2)].IntVal); i <= (yyvsp[(2) - (2)].IntVal); ++i) + (yyval.BitList)->push_back(i); } else { - for (int i = yyvsp[-1].IntVal; i >= yyvsp[0].IntVal; --i) - yyval.BitList->push_back(i); + for (int i = (yyvsp[(1) - (2)].IntVal); i >= (yyvsp[(2) - (2)].IntVal); --i) + (yyval.BitList)->push_back(i); } - ; - break;} -case 40: -#line 457 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - (yyval.BitList=yyvsp[-2].BitList)->push_back(yyvsp[0].IntVal); - ; - break;} -case 41: -#line 459 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - if (yyvsp[-2].IntVal < 0 || yyvsp[0].IntVal < 0) { - err() << "Invalid range: " << yyvsp[-2].IntVal << "-" << yyvsp[0].IntVal << "!\n"; + ;} + break; + + case 41: +#line 458 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + ((yyval.BitList)=(yyvsp[(1) - (3)].BitList))->push_back((yyvsp[(3) - (3)].IntVal)); + ;} + break; + + case 42: +#line 460 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + if ((yyvsp[(3) - (5)].IntVal) < 0 || (yyvsp[(5) - (5)].IntVal) < 0) { + err() << "Invalid range: " << (yyvsp[(3) - (5)].IntVal) << "-" << (yyvsp[(5) - (5)].IntVal) << "!\n"; exit(1); } - yyval.BitList = yyvsp[-4].BitList; - if (yyvsp[-2].IntVal < yyvsp[0].IntVal) { - for (int i = yyvsp[-2].IntVal; i <= yyvsp[0].IntVal; ++i) - yyval.BitList->push_back(i); + (yyval.BitList) = (yyvsp[(1) - (5)].BitList); + if ((yyvsp[(3) - (5)].IntVal) < (yyvsp[(5) - (5)].IntVal)) { + for (int i = (yyvsp[(3) - (5)].IntVal); i <= (yyvsp[(5) - (5)].IntVal); ++i) + (yyval.BitList)->push_back(i); } else { - for (int i = yyvsp[-2].IntVal; i >= yyvsp[0].IntVal; --i) - yyval.BitList->push_back(i); + for (int i = (yyvsp[(3) - (5)].IntVal); i >= (yyvsp[(5) - (5)].IntVal); --i) + (yyval.BitList)->push_back(i); } - ; - break;} -case 42: -#line 472 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyvsp[0].IntVal = -yyvsp[0].IntVal; - if (yyvsp[-1].IntVal < 0 || yyvsp[0].IntVal < 0) { - err() << "Invalid range: " << yyvsp[-1].IntVal << "-" << yyvsp[0].IntVal << "!\n"; + ;} + break; + + case 43: +#line 473 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyvsp[(4) - (4)].IntVal) = -(yyvsp[(4) - (4)].IntVal); + if ((yyvsp[(3) - (4)].IntVal) < 0 || (yyvsp[(4) - (4)].IntVal) < 0) { + err() << "Invalid range: " << (yyvsp[(3) - (4)].IntVal) << "-" << (yyvsp[(4) - (4)].IntVal) << "!\n"; exit(1); } - yyval.BitList = yyvsp[-3].BitList; - if (yyvsp[-1].IntVal < yyvsp[0].IntVal) { - for (int i = yyvsp[-1].IntVal; i <= yyvsp[0].IntVal; ++i) - yyval.BitList->push_back(i); + (yyval.BitList) = (yyvsp[(1) - (4)].BitList); + if ((yyvsp[(3) - (4)].IntVal) < (yyvsp[(4) - (4)].IntVal)) { + for (int i = (yyvsp[(3) - (4)].IntVal); i <= (yyvsp[(4) - (4)].IntVal); ++i) + (yyval.BitList)->push_back(i); } else { - for (int i = yyvsp[-1].IntVal; i >= yyvsp[0].IntVal; --i) - yyval.BitList->push_back(i); + for (int i = (yyvsp[(3) - (4)].IntVal); i >= (yyvsp[(4) - (4)].IntVal); --i) + (yyval.BitList)->push_back(i); } - ; - break;} -case 43: -#line 488 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.BitList = yyvsp[0].BitList; std::reverse(yyvsp[0].BitList->begin(), yyvsp[0].BitList->end()); ; - break;} -case 44: -#line 490 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.BitList = 0; ; - break;} -case 45: -#line 490 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.BitList = yyvsp[-1].BitList; ; - break;} -case 46: -#line 494 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.FieldList = new std::vector(); - ; - break;} -case 47: -#line 496 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.FieldList = yyvsp[0].FieldList; - ; - break;} -case 48: -#line 500 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.FieldList = new std::vector(); - yyval.FieldList->push_back(yyvsp[0].Initializer); - ; - break;} -case 49: -#line 503 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - (yyval.FieldList = yyvsp[-2].FieldList)->push_back(yyvsp[0].Initializer); - ; - break;} -case 50: -#line 507 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - std::string DecName = *yyvsp[-1].StrVal; + ;} + break; + + case 44: +#line 489 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.BitList) = (yyvsp[(1) - (1)].BitList); std::reverse((yyvsp[(1) - (1)].BitList)->begin(), (yyvsp[(1) - (1)].BitList)->end()); ;} + break; + + case 45: +#line 491 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.BitList) = 0; ;} + break; + + case 46: +#line 491 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.BitList) = (yyvsp[(2) - (3)].BitList); ;} + break; + + case 47: +#line 495 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.FieldList) = new std::vector(); + ;} + break; + + case 48: +#line 497 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.FieldList) = (yyvsp[(1) - (1)].FieldList); + ;} + break; + + case 49: +#line 501 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.FieldList) = new std::vector(); + (yyval.FieldList)->push_back((yyvsp[(1) - (1)].Initializer)); + ;} + break; + + case 50: +#line 504 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + ((yyval.FieldList) = (yyvsp[(1) - (3)].FieldList))->push_back((yyvsp[(3) - (3)].Initializer)); + ;} + break; + + case 51: +#line 508 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + std::string DecName = *(yyvsp[(3) - (4)].StrVal); if (ParsingTemplateArgs) { if (CurRec) { DecName = CurRec->getName() + ":" + DecName; @@ -1494,104 +2227,119 @@ case 50: DecName = CurMultiClass->Rec.getName() + "::" + DecName; } - addValue(RecordVal(DecName, yyvsp[-2].Ty, yyvsp[-3].IntVal)); - setValue(DecName, 0, yyvsp[0].Initializer); - yyval.StrVal = new std::string(DecName); -; - break;} -case 51: -#line 524 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - delete yyvsp[-1].StrVal; -; - break;} -case 52: -#line 526 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - setValue(*yyvsp[-4].StrVal, yyvsp[-3].BitList, yyvsp[-1].Initializer); - delete yyvsp[-4].StrVal; - delete yyvsp[-3].BitList; -; - break;} -case 57: -#line 535 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.SubClassRef = new SubClassRefTy(yyvsp[0].Rec, new std::vector()); - ; - break;} -case 58: -#line 537 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.SubClassRef = new SubClassRefTy(yyvsp[-3].Rec, yyvsp[-1].FieldList); - ; - break;} -case 59: -#line 541 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.SubClassList = new std::vector(); - yyval.SubClassList->push_back(*yyvsp[0].SubClassRef); - delete yyvsp[0].SubClassRef; - ; - break;} -case 60: -#line 546 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - (yyval.SubClassList=yyvsp[-2].SubClassList)->push_back(*yyvsp[0].SubClassRef); - delete yyvsp[0].SubClassRef; - ; - break;} -case 61: -#line 551 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.SubClassList = new std::vector(); - ; - break;} -case 62: -#line 554 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.SubClassList = yyvsp[0].SubClassList; - ; - break;} -case 63: -#line 558 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - getActiveRec()->addTemplateArg(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; -; - break;} -case 64: -#line 561 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - getActiveRec()->addTemplateArg(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; -; - break;} -case 65: -#line 566 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{; - break;} -case 68: -#line 569 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.StrVal = yyvsp[0].StrVal; ; - break;} -case 69: -#line 569 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ yyval.StrVal = new std::string(); ; - break;} -case 70: -#line 571 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + addValue(RecordVal(DecName, (yyvsp[(2) - (4)].Ty), (yyvsp[(1) - (4)].IntVal))); + setValue(DecName, 0, (yyvsp[(4) - (4)].Initializer)); + (yyval.StrVal) = new std::string(DecName); +;} + break; + + case 52: +#line 525 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + delete (yyvsp[(1) - (2)].StrVal); +;} + break; + + case 53: +#line 527 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + setValue(*(yyvsp[(2) - (6)].StrVal), (yyvsp[(3) - (6)].BitList), (yyvsp[(5) - (6)].Initializer)); + delete (yyvsp[(2) - (6)].StrVal); + delete (yyvsp[(3) - (6)].BitList); +;} + break; + + case 58: +#line 536 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.SubClassRef) = new SubClassRefTy((yyvsp[(1) - (1)].Rec), new std::vector()); + ;} + break; + + case 59: +#line 538 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.SubClassRef) = new SubClassRefTy((yyvsp[(1) - (4)].Rec), (yyvsp[(3) - (4)].FieldList)); + ;} + break; + + case 60: +#line 542 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.SubClassList) = new std::vector(); + (yyval.SubClassList)->push_back(*(yyvsp[(1) - (1)].SubClassRef)); + delete (yyvsp[(1) - (1)].SubClassRef); + ;} + break; + + case 61: +#line 547 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + ((yyval.SubClassList)=(yyvsp[(1) - (3)].SubClassList))->push_back(*(yyvsp[(3) - (3)].SubClassRef)); + delete (yyvsp[(3) - (3)].SubClassRef); + ;} + break; + + case 62: +#line 552 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.SubClassList) = new std::vector(); + ;} + break; + + case 63: +#line 555 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.SubClassList) = (yyvsp[(2) - (2)].SubClassList); + ;} + break; + + case 64: +#line 559 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + getActiveRec()->addTemplateArg(*(yyvsp[(1) - (1)].StrVal)); + delete (yyvsp[(1) - (1)].StrVal); +;} + break; + + case 65: +#line 562 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + getActiveRec()->addTemplateArg(*(yyvsp[(3) - (3)].StrVal)); + delete (yyvsp[(3) - (3)].StrVal); +;} + break; + + case 66: +#line 567 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + {;} + break; + + case 69: +#line 570 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;} + break; + + case 70: +#line 570 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { (yyval.StrVal) = new std::string(); ;} + break; + + case 71: +#line 572 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { static unsigned AnonCounter = 0; - if (yyvsp[0].StrVal->empty()) - *yyvsp[0].StrVal = "anonymous."+utostr(AnonCounter++); - yyval.StrVal = yyvsp[0].StrVal; -; - break;} -case 71: -#line 578 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + if ((yyvsp[(1) - (1)].StrVal)->empty()) + *(yyvsp[(1) - (1)].StrVal) = "anonymous."+utostr(AnonCounter++); + (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); +;} + break; + + case 72: +#line 579 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // If a class of this name already exists, it must be a forward ref. - if ((CurRec = Records.getClass(*yyvsp[0].StrVal))) { + if ((CurRec = Records.getClass(*(yyvsp[(1) - (1)].StrVal)))) { // If the body was previously defined, this is an error. if (!CurRec->getValues().empty() || !CurRec->getSuperClasses().empty() || @@ -1601,17 +2349,18 @@ case 71: } } else { // If this is the first reference to this class, create and add it. - CurRec = new Record(*yyvsp[0].StrVal); + CurRec = new Record(*(yyvsp[(1) - (1)].StrVal)); Records.addClass(CurRec); } - delete yyvsp[0].StrVal; -; - break;} -case 72: -#line 596 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - CurRec = new Record(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; + delete (yyvsp[(1) - (1)].StrVal); +;} + break; + + case 73: +#line 597 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + CurRec = new Record(*(yyvsp[(1) - (1)].StrVal)); + delete (yyvsp[(1) - (1)].StrVal); if (!CurMultiClass) { // Top-level def definition. @@ -1632,17 +2381,18 @@ case 72: } CurMultiClass->DefPrototypes.push_back(CurRec); } -; - break;} -case 73: -#line 621 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - for (unsigned i = 0, e = yyvsp[0].SubClassList->size(); i != e; ++i) { - addSubClass((*yyvsp[0].SubClassList)[i].first, *(*yyvsp[0].SubClassList)[i].second); +;} + break; + + case 74: +#line 622 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + for (unsigned i = 0, e = (yyvsp[(1) - (1)].SubClassList)->size(); i != e; ++i) { + addSubClass((*(yyvsp[(1) - (1)].SubClassList))[i].first, *(*(yyvsp[(1) - (1)].SubClassList))[i].second); // Delete the template arg values for the class - delete (*yyvsp[0].SubClassList)[i].second; + delete (*(yyvsp[(1) - (1)].SubClassList))[i].second; } - delete yyvsp[0].SubClassList; // Delete the class list. + delete (yyvsp[(1) - (1)].SubClassList); // Delete the class list. // Process any variables on the let stack. for (unsigned i = 0, e = LetStack.size(); i != e; ++i) @@ -1650,115 +2400,129 @@ case 73: setValue(LetStack[i][j].Name, LetStack[i][j].HasBits ? &LetStack[i][j].Bits : 0, LetStack[i][j].Value); - ; - break;} -case 74: -#line 635 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Rec = CurRec; + ;} + break; + + case 75: +#line 636 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Rec) = CurRec; CurRec = 0; - ; - break;} -case 75: -#line 640 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + ;} + break; + + case 76: +#line 641 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { ParsingTemplateArgs = true; - ; - break;} -case 76: -#line 642 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + ;} + break; + + case 77: +#line 643 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { ParsingTemplateArgs = false; - ; - break;} -case 77: -#line 644 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Rec = yyvsp[0].Rec; - ; - break;} -case 78: -#line 648 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + ;} + break; + + case 78: +#line 645 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Rec) = (yyvsp[(6) - (6)].Rec); + ;} + break; + + case 79: +#line 649 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { if (CurMultiClass == 0) // Def's in multiclasses aren't really defs. - yyvsp[0].Rec->resolveReferences(); + (yyvsp[(3) - (3)].Rec)->resolveReferences(); // If ObjectBody has template arguments, it's an error. - assert(yyvsp[0].Rec->getTemplateArgs().empty() && "How'd this get template args?"); - yyval.Rec = yyvsp[0].Rec; -; - break;} -case 79: -#line 658 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.Rec = yyvsp[0].Rec; + assert((yyvsp[(3) - (3)].Rec)->getTemplateArgs().empty() && "How'd this get template args?"); + (yyval.Rec) = (yyvsp[(3) - (3)].Rec); +;} + break; + + case 80: +#line 659 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.Rec) = (yyvsp[(1) - (1)].Rec); // Copy the template arguments for the multiclass into the def. const std::vector &TArgs = CurMultiClass->Rec.getTemplateArgs(); for (unsigned i = 0, e = TArgs.size(); i != e; ++i) { const RecordVal *RV = CurMultiClass->Rec.getValue(TArgs[i]); assert(RV && "Template arg doesn't exist?"); - yyval.Rec->addValue(*RV); + (yyval.Rec)->addValue(*RV); } -; - break;} -case 80: -#line 672 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.RecList = new std::vector(); - yyval.RecList->push_back(yyvsp[0].Rec); -; - break;} -case 81: -#line 675 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - yyval.RecList->push_back(yyvsp[0].Rec); -; - break;} -case 82: -#line 679 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - MultiClass *&MCE = MultiClasses[*yyvsp[0].StrVal]; +;} + break; + + case 81: +#line 673 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.RecList) = new std::vector(); + (yyval.RecList)->push_back((yyvsp[(1) - (1)].Rec)); +;} + break; + + case 82: +#line 676 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + (yyval.RecList)->push_back((yyvsp[(2) - (2)].Rec)); +;} + break; + + case 83: +#line 680 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + MultiClass *&MCE = MultiClasses[*(yyvsp[(1) - (1)].StrVal)]; if (MCE) { - err() << "multiclass '" << *yyvsp[0].StrVal << "' already defined!\n"; + err() << "multiclass '" << *(yyvsp[(1) - (1)].StrVal) << "' already defined!\n"; exit(1); } - MCE = CurMultiClass = new MultiClass(*yyvsp[0].StrVal); - delete yyvsp[0].StrVal; -; - break;} -case 83: -#line 690 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + MCE = CurMultiClass = new MultiClass(*(yyvsp[(1) - (1)].StrVal)); + delete (yyvsp[(1) - (1)].StrVal); +;} + break; + + case 84: +#line 691 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { ParsingTemplateArgs = true; - ; - break;} -case 84: -#line 692 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + ;} + break; + + case 85: +#line 693 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { ParsingTemplateArgs = false; - ; - break;} -case 85: -#line 694 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ + ;} + break; + + case 86: +#line 695 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { CurMultiClass = 0; -; - break;} -case 86: -#line 699 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ CurDefmPrefix = yyvsp[0].StrVal; ; - break;} -case 87: -#line 699 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ +;} + break; + + case 87: +#line 700 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { CurDefmPrefix = (yyvsp[(2) - (2)].StrVal); ;} + break; + + case 88: +#line 700 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { // To instantiate a multiclass, we need to first get the multiclass, then // instantiate each def contained in the multiclass with the SubClassRef // template parameters. - MultiClass *MC = MultiClasses[yyvsp[-1].SubClassRef->first->getName()]; + MultiClass *MC = MultiClasses[(yyvsp[(5) - (6)].SubClassRef)->first->getName()]; assert(MC && "Didn't lookup multiclass correctly?"); - std::vector &TemplateVals = *yyvsp[-1].SubClassRef->second; - delete yyvsp[-1].SubClassRef; + std::vector &TemplateVals = *(yyvsp[(5) - (6)].SubClassRef)->second; + delete (yyvsp[(5) - (6)].SubClassRef); // Verify that the correct number of template arguments were specified. const std::vector &TArgs = MC->Rec.getTemplateArgs(); @@ -1773,7 +2537,7 @@ case 87: // Add the suffix to the defm name to get the new name. assert(CurRec == 0 && "A def is current?"); - CurRec = new Record(*yyvsp[-4].StrVal + DefProto->getName()); + CurRec = new Record(*(yyvsp[(2) - (6)].StrVal) + DefProto->getName()); addSubClass(DefProto, std::vector()); @@ -1809,7 +2573,7 @@ case 87: // Ensure redefinition doesn't happen. if (Records.getDef(CurRec->getName())) { err() << "def '" << CurRec->getName() << "' already defined, " - << "instantiating defm '" << *yyvsp[-4].StrVal << "' with subdef '" + << "instantiating defm '" << *(yyvsp[(2) - (6)].StrVal) << "' with subdef '" << DefProto->getName() << "'!\n"; exit(1); } @@ -1821,275 +2585,279 @@ case 87: } delete &TemplateVals; - delete yyvsp[-4].StrVal; + delete (yyvsp[(2) - (6)].StrVal); CurDefmPrefix = 0; -; - break;} -case 88: -#line 773 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{; - break;} -case 89: -#line 773 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{; - break;} -case 92: -#line 776 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - LetStack.back().push_back(LetRecord(*yyvsp[-3].StrVal, yyvsp[-2].BitList, yyvsp[0].Initializer)); - delete yyvsp[-3].StrVal; delete yyvsp[-2].BitList; -; - break;} -case 95: -#line 784 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ LetStack.push_back(std::vector()); ; - break;} -case 97: -#line 787 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ - LetStack.pop_back(); - ; - break;} -case 98: -#line 790 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{ +;} + break; + + case 89: +#line 774 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + {;} + break; + + case 90: +#line 774 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + {;} + break; + + case 93: +#line 777 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { + LetStack.back().push_back(LetRecord(*(yyvsp[(1) - (4)].StrVal), (yyvsp[(2) - (4)].BitList), (yyvsp[(4) - (4)].Initializer))); + delete (yyvsp[(1) - (4)].StrVal); delete (yyvsp[(2) - (4)].BitList); +;} + break; + + case 96: +#line 785 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { LetStack.push_back(std::vector()); ;} + break; + + case 98: +#line 788 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + { LetStack.pop_back(); - ; - break;} -case 99: -#line 794 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{; - break;} -case 100: -#line 794 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" -{; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/share/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif + ;} + break; -#if YYDEBUG != 0 - if (yydebug) + case 99: +#line 791 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + LetStack.pop_back(); + ;} + break; + + case 100: +#line 795 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + {;} + break; + + case 101: +#line 795 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" + {;} + break; + + +/* Line 1267 of yacc.c. */ +#line 2643 "FileParser.tab.c" + default: break; } -#endif + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ yyn = yyr1[yyn]; - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else - yystate = yydefgoto[yyn - YYNTBASE]; + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; -yyerrlab: /* here on detecting error */ - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif } - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ + if (yyerrstatus == 3) { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ - yychar = YYEMPTY; + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse lookahead token - after shifting the error token. */ + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; - yyerrstatus = 3; /* Each real token shifted decrements this */ - goto yyerrhandle; +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: -yyerrdefault: /* current state does not do anything special for the error token. */ + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; -yyerrpop: /* pop the current state because it cannot handle the error token */ - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ -#if YYDEBUG != 0 - if (yydebug) + for (;;) { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); } - else if (yyn == 0) - goto yyerrpop; if (yyn == YYFINAL) YYACCEPT; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ #endif - } - return 0; - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); } - return 1; +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 798 "/Volumes/ProjectsDisk/cvs/llvm/utils/TableGen/FileParser.y" + + +#line 799 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" int yyerror(const char *ErrorMsg) { err() << "Error parsing: " << ErrorMsg << "\n"; exit(1); } + diff --git a/utils/TableGen/FileParser.h.cvs b/utils/TableGen/FileParser.h.cvs index 47cffa2e0c8..e7539375505 100644 --- a/utils/TableGen/FileParser.h.cvs +++ b/utils/TableGen/FileParser.h.cvs @@ -1,4 +1,101 @@ -typedef union { +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INT = 258, + BIT = 259, + STRING = 260, + BITS = 261, + LIST = 262, + CODE = 263, + DAG = 264, + CLASS = 265, + DEF = 266, + MULTICLASS = 267, + DEFM = 268, + FIELD = 269, + LET = 270, + IN = 271, + SHLTOK = 272, + SRATOK = 273, + SRLTOK = 274, + STRCONCATTOK = 275, + INTVAL = 276, + ID = 277, + VARNAME = 278, + STRVAL = 279, + CODEFRAGMENT = 280 + }; +#endif +/* Tokens. */ +#define INT 258 +#define BIT 259 +#define STRING 260 +#define BITS 261 +#define LIST 262 +#define CODE 263 +#define DAG 264 +#define CLASS 265 +#define DEF 266 +#define MULTICLASS 267 +#define DEFM 268 +#define FIELD 269 +#define LET 270 +#define IN 271 +#define SHLTOK 272 +#define SRATOK 273 +#define SRLTOK 274 +#define STRCONCATTOK 275 +#define INTVAL 276 +#define ID 277 +#define VARNAME 278 +#define STRVAL 279 +#define CODEFRAGMENT 280 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 210 "/Volumes/Gir/devel/llvm/llvm.src/utils/TableGen/FileParser.y" +{ std::string* StrVal; int IntVal; llvm::RecTy* Ty; @@ -10,30 +107,14 @@ typedef union { SubClassRefTy* SubClassRef; std::vector* SubClassList; std::vector >* DagValueList; -} YYSTYPE; -#define INT 257 -#define BIT 258 -#define STRING 259 -#define BITS 260 -#define LIST 261 -#define CODE 262 -#define DAG 263 -#define CLASS 264 -#define DEF 265 -#define MULTICLASS 266 -#define DEFM 267 -#define FIELD 268 -#define LET 269 -#define IN 270 -#define SHLTOK 271 -#define SRATOK 272 -#define SRLTOK 273 -#define STRCONCATTOK 274 -#define INTVAL 275 -#define ID 276 -#define VARNAME 277 -#define STRVAL 278 -#define CODEFRAGMENT 279 - +} +/* Line 1529 of yacc.c. */ +#line 113 "FileParser.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif extern YYSTYPE Filelval; + diff --git a/utils/TableGen/FileParser.y b/utils/TableGen/FileParser.y index 8e564564bde..2732680d2fb 100644 --- a/utils/TableGen/FileParser.y +++ b/utils/TableGen/FileParser.y @@ -14,6 +14,7 @@ %{ #include "Record.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/Support/Streams.h" #include #include #define YYERROR_VERBOSE 1 @@ -124,7 +125,7 @@ static void setValue(const std::string &ValName, } // We should have a BitsInit type now... - assert(dynamic_cast(BI) != 0 || &(std::cerr << *BI) == 0); + assert(dynamic_cast(BI) != 0 || (cerr << *BI).stream() == 0); BitsInit *BInit = (BitsInit*)BI; BitsInit *NewVal = new BitsInit(CurVal->getNumBits()); diff --git a/utils/TableGen/FileParser.y.cvs b/utils/TableGen/FileParser.y.cvs index 8e564564bde..2732680d2fb 100644 --- a/utils/TableGen/FileParser.y.cvs +++ b/utils/TableGen/FileParser.y.cvs @@ -14,6 +14,7 @@ %{ #include "Record.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/Support/Streams.h" #include #include #define YYERROR_VERBOSE 1 @@ -124,7 +125,7 @@ static void setValue(const std::string &ValName, } // We should have a BitsInit type now... - assert(dynamic_cast(BI) != 0 || &(std::cerr << *BI) == 0); + assert(dynamic_cast(BI) != 0 || (cerr << *BI).stream() == 0); BitsInit *BInit = (BitsInit*)BI; BitsInit *NewVal = new BitsInit(CurVal->getNumBits()); diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp index a1c808b0704..3d4da0ee288 100644 --- a/utils/TableGen/InstrInfoEmitter.cpp +++ b/utils/TableGen/InstrInfoEmitter.cpp @@ -37,7 +37,7 @@ void InstrInfoEmitter::runEnums(std::ostream &OS) { } if (Namespace.empty()) { - std::cerr << "No instructions defined!\n"; + cerr << "No instructions defined!\n"; exit(1); } @@ -349,7 +349,7 @@ void InstrInfoEmitter::emitShiftedValue(Record *R, StringInit *Val, return; } - std::cerr << "Unhandled initializer: " << *Val << "\n"; + cerr << "Unhandled initializer: " << *Val << "\n"; throw "In record '" + R->getName() + "' for TSFlag emission."; } diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index c1ef4ed82f4..94e0cb472f3 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -13,6 +13,7 @@ #include "Record.h" #include "llvm/Support/DataTypes.h" +#include "llvm/Support/Streams.h" #include using namespace llvm; @@ -21,7 +22,7 @@ using namespace llvm; // Type implementations //===----------------------------------------------------------------------===// -void RecTy::dump() const { print(std::cerr); } +void RecTy::dump() const { print(*cerr.stream()); } Init *BitRecTy::convertValue(BitsInit *BI) { if (BI->getNumBits() != 1) return 0; // Only accept if just one bit! @@ -213,7 +214,7 @@ bool RecordRecTy::baseClassOf(const RecordRecTy *RHS) const { // Initializer implementations //===----------------------------------------------------------------------===// -void Init::dump() const { return print(std::cerr); } +void Init::dump() const { return print(*cerr.stream()); } Init *BitsInit::convertInitializerBitRange(const std::vector &Bits) { BitsInit *BI = new BitsInit(Bits.size()); @@ -602,7 +603,7 @@ Init *FieldInit::resolveReferences(Record &R, const RecordVal *RV) { if (NewRec != Rec) { dump(); - NewRec->dump(); std::cerr << "\n"; + NewRec->dump(); cerr << "\n"; return new FieldInit(NewRec, FieldName); } return this; @@ -646,7 +647,7 @@ RecordVal::RecordVal(const std::string &N, RecTy *T, unsigned P) assert(Value && "Cannot create unset value for current type!"); } -void RecordVal::dump() const { std::cerr << *this; } +void RecordVal::dump() const { cerr << *this; } void RecordVal::print(std::ostream &OS, bool PrintSem) const { if (getPrefix()) OS << "field "; @@ -681,7 +682,7 @@ void Record::resolveReferencesTo(const RecordVal *RV) { } -void Record::dump() const { std::cerr << *this; } +void Record::dump() const { cerr << *this; } std::ostream &llvm::operator<<(std::ostream &OS, const Record &R) { OS << R.getName(); @@ -874,7 +875,7 @@ std::string Record::getValueAsCode(const std::string &FieldName) const { } -void RecordKeeper::dump() const { std::cerr << *this; } +void RecordKeeper::dump() const { cerr << *this; } std::ostream &llvm::operator<<(std::ostream &OS, const RecordKeeper &RK) { OS << "------------- Classes -----------------\n"; diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 84e129071fd..986e9178d90 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include namespace llvm { diff --git a/utils/TableGen/RegisterInfoEmitter.cpp b/utils/TableGen/RegisterInfoEmitter.cpp index 11107f212b9..608b6dc6396 100644 --- a/utils/TableGen/RegisterInfoEmitter.cpp +++ b/utils/TableGen/RegisterInfoEmitter.cpp @@ -19,6 +19,7 @@ #include "Record.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/Support/Streams.h" #include using namespace llvm; @@ -284,15 +285,15 @@ void RegisterInfoEmitter::run(std::ostream &OS) { for (unsigned j = 0, e = LI.size(); j != e; ++j) { Record *Reg = LI[j]; if (RegisterAliases[R].count(Reg)) - std::cerr << "Warning: register alias between " << getQualifiedName(R) - << " and " << getQualifiedName(Reg) - << " specified multiple times!\n"; + cerr << "Warning: register alias between " << getQualifiedName(R) + << " and " << getQualifiedName(Reg) + << " specified multiple times!\n"; RegisterAliases[R].insert(Reg); if (RegisterAliases[Reg].count(R)) - std::cerr << "Warning: register alias between " << getQualifiedName(R) - << " and " << getQualifiedName(Reg) - << " specified multiple times!\n"; + cerr << "Warning: register alias between " << getQualifiedName(R) + << " and " << getQualifiedName(Reg) + << " specified multiple times!\n"; RegisterAliases[Reg].insert(R); } } diff --git a/utils/TableGen/TableGen.cpp b/utils/TableGen/TableGen.cpp index 1adc448b5b5..4345234c275 100644 --- a/utils/TableGen/TableGen.cpp +++ b/utils/TableGen/TableGen.cpp @@ -17,6 +17,7 @@ #include "Record.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/Streams.h" #include "llvm/System/Signals.h" #include "llvm/Support/FileUtilities.h" #include "CodeEmitterGen.h" @@ -99,12 +100,12 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv); ParseFile(InputFilename, IncludeDirs); - std::ostream *Out = &std::cout; + std::ostream *Out = cout.stream(); if (OutputFilename != "-") { Out = new std::ofstream(OutputFilename.c_str()); if (!Out->good()) { - std::cerr << argv[0] << ": error opening " << OutputFilename << "!\n"; + cerr << argv[0] << ": error opening " << OutputFilename << "!\n"; return 1; } @@ -164,22 +165,22 @@ int main(int argc, char **argv) { return 1; } } catch (const std::string &Error) { - std::cerr << argv[0] << ": " << Error << "\n"; - if (Out != &std::cout) { + cerr << argv[0] << ": " << Error << "\n"; + if (Out != cout.stream()) { delete Out; // Close the file std::remove(OutputFilename.c_str()); // Remove the file, it's broken } return 1; } catch (...) { - std::cerr << argv[0] << ": Unknown unexpected exception occurred.\n"; - if (Out != &std::cout) { + cerr << argv[0] << ": Unknown unexpected exception occurred.\n"; + if (Out != cout.stream()) { delete Out; // Close the file std::remove(OutputFilename.c_str()); // Remove the file, it's broken } return 2; } - if (Out != &std::cout) { + if (Out != cout.stream()) { delete Out; // Close the file } return 0; diff --git a/utils/TableGen/TableGenBackend.cpp b/utils/TableGen/TableGenBackend.cpp index 716bb4886c9..d62ba4704f9 100644 --- a/utils/TableGen/TableGenBackend.cpp +++ b/utils/TableGen/TableGenBackend.cpp @@ -13,7 +13,6 @@ #include "TableGenBackend.h" #include "Record.h" -#include using namespace llvm; void TableGenBackend::EmitSourceFileHeader(const std::string &Desc, -- 2.34.1