[LLVMdev] mem2reg optimization

Nicolas Capens nicolas at capens.net
Thu Sep 25 05:49:43 PDT 2008


I forgot to ask: I found that uses appear to be stored in reverse order
(i.e. use_begin() gives us an iterator that starts with the last use and
incrementing it brings us to the first one). Is that correct and is it
something I can always rely on for analysis? Thanks.


-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Nicolas Capens
Sent: Thursday, 25 September, 2008 14:40
To: 'David Greene'
Cc: 'LLVM Developers Mailing List'
Subject: Re: [LLVMdev] mem2reg optimization

Hi Dave,

As an exercise I tried to fix this myself, and I think I have a working
patch (attached). My own tests are all working wonderfully, and at fantastic
performance!

I'm looking forward to your patch to see whether we used the same approach
or whether things could be improved further.

Anyway, I've re-profiled the code and found ComputeLiveInBlocks to be the
main hotspot now. Again it uses a linear search over the instructions so
there's a chance this can be optimized as well...

Kind regards,

Nicolas


-----Original Message-----
From: David Greene [mailto:dag at cray.com]
Sent: Wednesday, 24 September, 2008 18:07
To: Nicolas Capens
Cc: 'LLVM Developers Mailing List'
Subject: Re: [LLVMdev] mem2reg optimization

On Wednesday 24 September 2008 09:35, Nicolas Capens wrote:
> Hi Dave,
>
> Did that patch of yours ever make it into trunk? I can't seem to find 
> any related checkin for PromoteMemoryToRegister.cpp. I've been doing 
> some
extra
> profiling lately and the RewriteSingleStoreAlloca function alone is 
> taking a whopping 63% of execution time.

I will commit it today along with some other things.  I've been having a lot

of trouble building llvm-gcc but I think I've struggled enouigh now and will
just hope our testing on this end has been enough.

Thanks for the prod.

                                          -Dave




More information about the llvm-dev mailing list