X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FCodeEmitterGen.cpp;h=ae4a6aa445b1ca0f80316202f0a61b2f0751f8e5;hb=d869b3847f1dee78e1e4e1ed3cb41bd3ab0a079c;hp=a21a31c2bfc123f8d2b1a2d7f96972c4eac3de36;hpb=c9298235251b014e86a7368d92b589d093acb64a;p=oota-llvm.git diff --git a/utils/TableGen/CodeEmitterGen.cpp b/utils/TableGen/CodeEmitterGen.cpp index a21a31c2bfc..ae4a6aa445b 100644 --- a/utils/TableGen/CodeEmitterGen.cpp +++ b/utils/TableGen/CodeEmitterGen.cpp @@ -26,7 +26,9 @@ void CodeEmitterGen::reverseBits(std::vector &Insts) { Record *R = *I; if (R->getName() == "PHI" || R->getName() == "INLINEASM" || - R->getName() == "LABEL" || + R->getName() == "DBG_LABEL" || + R->getName() == "EH_LABEL" || + R->getName() == "GC_LABEL" || R->getName() == "DECLARE" || R->getName() == "EXTRACT_SUBREG" || R->getName() == "INSERT_SUBREG" || @@ -87,7 +89,7 @@ void CodeEmitterGen::run(std::ostream &o) { // Emit function declaration o << "unsigned " << Target.getName() << "CodeEmitter::" - << "getBinaryCodeForInstr(MachineInstr &MI) {\n"; + << "getBinaryCodeForInstr(const MachineInstr &MI) {\n"; // Emit instruction base values o << " static const unsigned InstBits[] = {\n"; @@ -98,17 +100,17 @@ void CodeEmitterGen::run(std::ostream &o) { const CodeGenInstruction *CGI = *IN; Record *R = CGI->TheDef; - if (IN != NumberedInstructions.begin()) o << ",\n"; - if (R->getName() == "PHI" || R->getName() == "INLINEASM" || - R->getName() == "LABEL" || + R->getName() == "DBG_LABEL" || + R->getName() == "EH_LABEL" || + R->getName() == "GC_LABEL" || R->getName() == "DECLARE" || R->getName() == "EXTRACT_SUBREG" || R->getName() == "INSERT_SUBREG" || R->getName() == "IMPLICIT_DEF" || R->getName() == "SUBREG_TO_REG") { - o << " 0U"; + o << " 0U,\n"; continue; } @@ -121,9 +123,9 @@ void CodeEmitterGen::run(std::ostream &o) { Value |= B->getValue() << (e-i-1); } } - o << " " << Value << "U"; + o << " " << Value << "U," << '\t' << "// " << R->getName() << "\n"; } - o << "\n };\n"; + o << " 0U\n };\n"; // Map to accumulate all the cases. std::map > CaseMap; @@ -137,7 +139,9 @@ void CodeEmitterGen::run(std::ostream &o) { if (InstName == "PHI" || InstName == "INLINEASM" || - InstName == "LABEL"|| + InstName == "DBG_LABEL"|| + InstName == "EH_LABEL"|| + InstName == "GC_LABEL"|| InstName == "DECLARE"|| InstName == "EXTRACT_SUBREG" || InstName == "INSERT_SUBREG" || @@ -187,7 +191,7 @@ void CodeEmitterGen::run(std::ostream &o) { gotOp = true; } - unsigned opMask = (1 << N) - 1; + unsigned opMask = ~0U >> (32-N); int opShift = beginVarBit - N + 1; opMask <<= opShift; opShift = beginInstBit - beginVarBit; @@ -214,7 +218,8 @@ void CodeEmitterGen::run(std::ostream &o) { // Emit initial function code o << " const unsigned opcode = MI.getOpcode();\n" << " unsigned Value = InstBits[opcode];\n" - << " unsigned op;\n" + << " unsigned op = 0;\n" + << " op = op; // suppress warning\n" << " switch (opcode) {\n"; // Emit each case statement