[llvm] r220394 - Use auto iteration in lib/Transforms/Scalar/SampleProfile.cpp. No functional changes.

Diego Novillo dnovillo at google.com
Wed Oct 22 10:21:17 PDT 2014


On 10/22/14 13:19, David Blaikie wrote:
>
>
> On Wed, Oct 22, 2014 at 9:51 AM, Diego Novillo <dnovillo at google.com 
> <mailto:dnovillo at google.com>> wrote:
>
>     Author: dnovillo
>     Date: Wed Oct 22 11:51:50 2014
>     New Revision: 220394
>
>     URL: http://llvm.org/viewvc/llvm-project?rev=220394&view=rev
>     Log:
>     Use auto iteration in lib/Transforms/Scalar/SampleProfile.cpp. No
>     functional changes.
>
>     Modified:
>         llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp
>
>     Modified: llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp
>     URL:
>     http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp?rev=220394&r1=220393&r2=220394&view=diff
>     ==============================================================================
>     --- llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp (original)
>     +++ llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp Wed Oct 22
>     11:51:50 2014
>     @@ -249,8 +249,8 @@ unsigned SampleProfileLoader::getBlockWe
>
>        // Otherwise, compute and cache B's weight.
>        unsigned Weight = 0;
>     -  for (BasicBlock::iterator I = B->begin(), E = B->end(); I != E;
>     ++I) {
>     -    unsigned InstWeight = getInstWeight(*I);
>     +  for (auto &I : B->getInstList()) {
>     +    unsigned InstWeight = getInstWeight(I);
>          if (InstWeight > Weight)
>            Weight = InstWeight;
>        }
>     @@ -267,7 +267,7 @@ unsigned SampleProfileLoader::getBlockWe
>      bool SampleProfileLoader::computeBlockWeights(Function &F) {
>        bool Changed = false;
>        DEBUG(dbgs() << "Block weights\n");
>     -  for (Function::iterator B = F.begin(), E = F.end(); B != E; ++B) {
>     +  for (auto B = F.begin(), E = F.end(); B != E; ++B) {
>
>
> for (auto &B : F) {
>
>          unsigned Weight = getBlockWeight(B);
>
>
> & you could change getBlockWeight to take a (possibly const?) 
> BasicBlock& instead of a BasicBlock*
>
>          Changed |= (Weight > 0);
>          DEBUG(printBlockWeight(dbgs(), B));
>
>
> & similarly here for printBlockWeight (pass by ref instead of pointer)

The problem here are the maps. I'm using block pointers as keys into the 
maps. I don't think I can use blocks themselves as keys.

>     @@ -302,9 +302,7 @@ bool SampleProfileLoader::computeBlockWe
>      void SampleProfileLoader::findEquivalencesFor(
>          BasicBlock *BB1, SmallVector<BasicBlock *, 8> Descendants,
>          DominatorTreeBase<BasicBlock> *DomTree) {
>     -  for (SmallVectorImpl<BasicBlock *>::iterator I =
>     Descendants.begin(),
>     -                                               E = Descendants.end();
>     -       I != E; ++I) {
>     +  for (auto I = Descendants.begin(), E = Descendants.end(); I !=
>     E; ++I) {
>          BasicBlock *BB2 = *I;
>
>
> for (auto *BB2 : Descendants) {
>
>          bool IsDomParent = DomTree->dominates(BB2, BB1);
>          bool IsInSameLoop = LI->getLoopFor(BB1) == LI->getLoopFor(BB2);
>     @@ -340,7 +338,7 @@ void SampleProfileLoader::findEquivalenc
>        SmallVector<BasicBlock *, 8> DominatedBBs;
>        DEBUG(dbgs() << "\nBlock equivalence classes\n");
>        // Find equivalence sets based on dominance and post-dominance
>     information.
>     -  for (Function::iterator B = F.begin(), E = F.end(); B != E; ++B) {
>     +  for (auto B = F.begin(), E = F.end(); B != E; ++B) {
>          BasicBlock *BB1 = B; 
>
>
> for (auto &BB1 : F) {
>
> Or, if there are lots of pointer uses you don't want to add '&' to:
>
> for (auto &B : F) {
>   auto *BB1 = &B;

Won't this give me the wrong pointer when accessing the map?

Diego.



More information about the llvm-commits mailing list