[llvm-commits] [llvm] r105279 - /llvm/trunk/lib/Transforms/Utils/LowerInvoke.cpp

Chris Lattner clattner at apple.com
Tue Jun 1 12:56:22 PDT 2010


On Jun 1, 2010, at 10:56 AM, Jim Grosbach wrote:
> URL: http://llvm.org/viewvc/llvm-project?rev=105279&view=rev
> Log:
> Use SmallVector instead of std::vector.

One tweak:

> @@ -95,7 +96,7 @@
>     void createAbortMessage(Module *M);
>     void writeAbortMessage(Instruction *IB);
>     bool insertCheapEHSupport(Function &F);
> -    void splitLiveRangesLiveAcrossInvokes(std::vector<InvokeInst*> &Invokes);
> +    void splitLiveRangesLiveAcrossInvokes(SmallVector<InvokeInst*,16> &Invokes);
>     void rewriteExpensiveInvoke(InvokeInst *II, unsigned InvokeNo,
>                                 AllocaInst *InvokeNum, AllocaInst *StackPtr,
>                                 SwitchInst *CatchSwitch);

For arguments, you can declare functions as taking "SmallVectorImpl<InvokeInst*> &", which avoids coding the small vector size into the argument list.

-Chris

> @@ -196,7 +197,7 @@
>     GlobalVariable *MsgGV = new GlobalVariable(*M, Msg->getType(), true,
>                                                GlobalValue::InternalLinkage,
>                                                Msg, "abortmsg");
> -    std::vector<Constant*> GEPIdx(2,
> +    SmallVector<Constant*,2> GEPIdx(2,
>                      Constant::getNullValue(Type::getInt32Ty(M->getContext())));
>     AbortMessage = ConstantExpr::getGetElementPtr(MsgGV, &GEPIdx[0], 2);

This looks like it should just use a 2-element C array.

>   } else {
> @@ -211,7 +212,7 @@
>     GlobalVariable *MsgGV = new GlobalVariable(*M, Msg->getType(), true,
>                                                GlobalValue::InternalLinkage,
>                                                Msg, "abortmsg");
> -    std::vector<Constant*> GEPIdx(2, Constant::getNullValue(
> +    SmallVector<Constant*,2> GEPIdx(2, Constant::getNullValue(
>                                             Type::getInt32Ty(M->getContext())));
>     AbortMessage = ConstantExpr::getGetElementPtr(MsgGV, &GEPIdx[0], 2);
>   }
...
>       new AllocaInst(JBLinkTy, 0, Align,
>                      "jblink", F.begin()->begin());
> 
> -    std::vector<Value*> Idx;
> +    SmallVector<Value*,2> Idx;
>     Idx.push_back(Constant::getNullValue(Type::getInt32Ty(F.getContext())));
>     Idx.push_back(ConstantInt::get(Type::getInt32Ty(F.getContext()), 1));
>     OldJmpBufPtr = GetElementPtrInst::Create(JmpBuf, Idx.begin(), Idx.end(),
> @@ -605,7 +606,7 @@
> 
>   // Create the block to do the longjmp.
>   // Get a pointer to the jmpbuf and longjmp.
> -  std::vector<Value*> Idx;
> +  SmallVector<Value*,2> Idx;
>   Idx.push_back(Constant::getNullValue(Type::getInt32Ty(F.getContext())));
>   Idx.push_back(ConstantInt::get(Type::getInt32Ty(F.getContext()), 0));
>   Idx[0] = GetElementPtrInst::Create(BufPtr, Idx.begin(), Idx.end(), "JmpBuf",

Likewise,

-Chris



More information about the llvm-commits mailing list