[llvm-commits] [llvm] r77605 - in /llvm/trunk: include/llvm/ADT/Twine.h lib/Transforms/IPO/ArgumentPromotion.cpp lib/Transforms/IPO/GlobalOpt.cpp lib/Transforms/Scalar/ScalarReplAggregates.cpp lib/Transforms/Utils/PromoteMemoryToRegister.cpp util
Daniel Dunbar
daniel at zuster.org
Thu Jul 30 11:24:49 PDT 2009
Ignore the AsmMatcherEmitter.cpp changes, I didn't mean to commit that.
On Thu, Jul 30, 2009 at 10:37 AM, Daniel Dunbar<daniel at zuster.org> wrote:
> Author: ddunbar
> Date: Thu Jul 30 12:37:43 2009
> New Revision: 77605
>
> URL: http://llvm.org/viewvc/llvm-project?rev=77605&view=rev
> Log:
> Twines: Don't allow implicit conversion from integers, this is too tricky.
>
> Modified:
> llvm/trunk/include/llvm/ADT/Twine.h
> llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp
> llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
> llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp
> llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
> llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
>
> Modified: llvm/trunk/include/llvm/ADT/Twine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/Twine.h?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/Twine.h (original)
> +++ llvm/trunk/include/llvm/ADT/Twine.h Thu Jul 30 12:37:43 2009
> @@ -252,22 +252,22 @@
> }
>
> /// Construct a twine to print \arg Val as an unsigned decimal integer.
> - Twine(const uint32_t &Val)
> + explicit Twine(const uint32_t &Val)
> : LHS(&Val), LHSKind(UDec32Kind), RHSKind(EmptyKind) {
> }
>
> /// Construct a twine to print \arg Val as a signed decimal integer.
> - Twine(const int32_t &Val)
> + explicit Twine(const int32_t &Val)
> : LHS(&Val), LHSKind(SDec32Kind), RHSKind(EmptyKind) {
> }
>
> /// Construct a twine to print \arg Val as an unsigned decimal integer.
> - Twine(const uint64_t &Val)
> + explicit Twine(const uint64_t &Val)
> : LHS(&Val), LHSKind(UDec64Kind), RHSKind(EmptyKind) {
> }
>
> /// Construct a twine to print \arg Val as a signed decimal integer.
> - Twine(const int64_t &Val)
> + explicit Twine(const int64_t &Val)
> : LHS(&Val), LHSKind(SDec64Kind), RHSKind(EmptyKind) {
> }
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Thu Jul 30 12:37:43 2009
> @@ -764,9 +764,9 @@
> Idxs[1] = ConstantInt::get(Type::Int32Ty, i);
> Value *Idx =
> GetElementPtrInst::Create(TheAlloca, Idxs, Idxs+2,
> - TheAlloca->getName()+"."+i,
> + TheAlloca->getName()+"."+Twine(i),
> InsertPt);
> - I2->setName(I->getName()+"."+i);
> + I2->setName(I->getName()+"."+Twine(i));
> new StoreInst(I2++, Idx, InsertPt);
> }
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp Thu Jul 30 12:37:43 2009
> @@ -494,7 +494,7 @@
> GlobalVariable *NGV = new GlobalVariable(Context,
> STy->getElementType(i), false,
> GlobalVariable::InternalLinkage,
> - In, GV->getName()+"."+i,
> + In, GV->getName()+"."+Twine(i),
> GV->isThreadLocal(),
> GV->getType()->getAddressSpace());
> Globals.insert(GV, NGV);
> @@ -530,7 +530,7 @@
> GlobalVariable *NGV = new GlobalVariable(Context,
> STy->getElementType(), false,
> GlobalVariable::InternalLinkage,
> - In, GV->getName()+"."+i,
> + In, GV->getName()+"."+Twine(i),
> GV->isThreadLocal(),
> GV->getType()->getAddressSpace());
> Globals.insert(GV, NGV);
> @@ -584,7 +584,7 @@
> for (unsigned i = 3, e = GEPI->getNumOperands(); i != e; ++i)
> Idxs.push_back(GEPI->getOperand(i));
> NewPtr = GetElementPtrInst::Create(NewPtr, Idxs.begin(), Idxs.end(),
> - GEPI->getName()+"."+Val, GEPI);
> + GEPI->getName()+"."+Twine(Val),GEPI);
> }
> }
> GEP->replaceAllUsesWith(NewPtr);
> @@ -1152,7 +1152,7 @@
> Result = new LoadInst(GetHeapSROAValue(LI->getOperand(0), FieldNo,
> InsertedScalarizedValues,
> PHIsToRewrite, Context),
> - LI->getName()+".f" + FieldNo, LI);
> + LI->getName()+".f"+Twine(FieldNo), LI);
> } else if (PHINode *PN = dyn_cast<PHINode>(V)) {
> // PN's type is pointer to struct. Make a new PHI of pointer to struct
> // field.
> @@ -1161,7 +1161,7 @@
>
> Result =
> PHINode::Create(PointerType::getUnqual(ST->getElementType(FieldNo)),
> - PN->getName()+".f"+FieldNo, PN);
> + PN->getName()+".f"+Twine(FieldNo), PN);
> PHIsToRewrite.push_back(std::make_pair(PN, FieldNo));
> } else {
> llvm_unreachable("Unknown usable value");
> @@ -1287,12 +1287,12 @@
> new GlobalVariable(*GV->getParent(),
> PFieldTy, false, GlobalValue::InternalLinkage,
> Context.getNullValue(PFieldTy),
> - GV->getName() + ".f" + FieldNo, GV,
> + GV->getName() + ".f" + Twine(FieldNo), GV,
> GV->isThreadLocal());
> FieldGlobals.push_back(NGV);
>
> MallocInst *NMI = new MallocInst(FieldTy, MI->getArraySize(),
> - MI->getName() + ".f" + FieldNo,MI);
> + MI->getName() + ".f" + Twine(FieldNo), MI);
> FieldMallocs.push_back(NMI);
> new StoreInst(NMI, NGV, MI);
> }
>
> Modified: llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Thu Jul 30 12:37:43 2009
> @@ -335,7 +335,7 @@
> for (unsigned i = 0, e = ST->getNumContainedTypes(); i != e; ++i) {
> AllocaInst *NA = new AllocaInst(ST->getContainedType(i), 0,
> AI->getAlignment(),
> - AI->getName() + "." + i, AI);
> + AI->getName() + "." + Twine(i), AI);
> ElementAllocas.push_back(NA);
> WorkList.push_back(NA); // Add to worklist for recursive processing
> }
> @@ -345,7 +345,7 @@
> const Type *ElTy = AT->getElementType();
> for (unsigned i = 0, e = AT->getNumElements(); i != e; ++i) {
> AllocaInst *NA = new AllocaInst(ElTy, 0, AI->getAlignment(),
> - AI->getName() + "." + i, AI);
> + AI->getName() + "." + Twine(i), AI);
> ElementAllocas.push_back(NA);
> WorkList.push_back(NA); // Add to worklist for recursive processing
> }
> @@ -776,7 +776,7 @@
> if (OtherPtr) {
> Value *Idx[2] = { Zero, ConstantInt::get(Type::Int32Ty, i) };
> OtherElt = GetElementPtrInst::Create(OtherPtr, Idx, Idx + 2,
> - OtherPtr->getNameStr()+"."+i,
> + OtherPtr->getNameStr()+"."+Twine(i),
> MI);
> uint64_t EltOffset;
> const PointerType *OtherPtrTy = cast<PointerType>(OtherPtr->getType());
>
> Modified: llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp Thu Jul 30 12:37:43 2009
> @@ -867,7 +867,7 @@
> // Create a PhiNode using the dereferenced type... and add the phi-node to the
> // BasicBlock.
> PN = PHINode::Create(Allocas[AllocaNo]->getAllocatedType(),
> - Allocas[AllocaNo]->getName() + "." + Version++,
> + Allocas[AllocaNo]->getName() + "." + Twine(Version++),
> BB->begin());
> ++NumPHIInsert;
> PhiToAllocaMap[PN] = AllocaNo;
>
> Modified: llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp?rev=77605&r1=77604&r2=77605&view=diff
>
> ==============================================================================
> --- llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp (original)
> +++ llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp Thu Jul 30 12:37:43 2009
> @@ -17,6 +17,32 @@
> #include "Record.h"
> using namespace llvm;
>
> +static std::string FlattenVariants(const std::string &AsmString,
> + unsigned Index) {
> + StringRef Cur = AsmString;
> + std::string Res = "";
> +
> + for (;;) {
> + std::pair<StringRef, StringRef> Split = Cur.split('{');
> +
> + Res += Split.first;
> + if (Split.second.empty())
> + break;
> +
> + std::pair<StringRef, StringRef> Inner = Cur.split('}');
> + StringRef Selection = Inner.first;
> + for (unsigned i = 0; i != Index; ++i)
> + Selection = Selection.split('|').second;
> + Selection = Selection.split('|').first;
> +
> + Res += Selection;
> +
> + Cur = Inner.second;
> + }
> +
> + return Res;
> +}
> +
> void AsmMatcherEmitter::run(raw_ostream &OS) {
> CodeGenTarget Target;
> const std::vector<CodeGenRegister> &Registers = Target.getRegisters();
> @@ -44,4 +70,29 @@
> }
> OS << " return true;\n";
> OS << "}\n";
> +
> + // Emit the function to match instructions.
> + std::vector<const CodeGenInstruction*> NumberedInstructions;
> + Target.getInstructionsByEnumValue(NumberedInstructions);
> +
> + const std::map<std::string, CodeGenInstruction> &Instructions =
> + Target.getInstructions();
> + for (std::map<std::string, CodeGenInstruction>::const_iterator
> + it = Instructions.begin(), ie = Instructions.end(); it != ie; ++it) {
> + const CodeGenInstruction &CGI = it->second;
> +
> + if (it->first != "SUB8rr")
> + continue;
> +
> + /*
> +def SUB8rr : I<0x28, MRMDestReg, (outs GR8:$dst), (ins GR8:$src1, GR8:$src2),
> + "sub{b}\t{$src2, $dst|$dst, $src2}",
> + [(set GR8:$dst, (sub GR8:$src1, GR8:$src2)),
> + (implicit EFLAGS)]>;
> + */
> +
> + outs() << it->first << " "
> + << FlattenVariants(CGI.AsmString, 0)
> + << "\n";
> + }
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list