[LLVMdev] Loop exit condition analysis

Hanfeng Qin hanfengtsin at gmail.com
Tue Dec 20 15:40:06 PST 2011


Thanks for your suggestions. As you assumed, I really means that c is a 
volatile variable. Here I give detailed scenario. It is about ad-hoc 
synchronization detection. Consider we have two threads,
thread 1;
....
volatile int *c = &a;
while (*c == 0);
....

thread 2:
...
a = 1;
...

In this sample, the spin-loop is used as ad-hoc synchronization. We call 
variable a is a synchronization variable while c is a loop exit variable 
which depends on the former. I want to filter such spin-loop from 
general computation loop. To do this, as "Ad-hoc Synchronization 
Considered Harmful"[Xiong et al 2010] presented, I need to analysis the 
EDVs (Exit Dependent Variables). Thus my former question arises. 
However, I am not familiar with compiler optimization. Could you please 
give me some further suggestions?

Thanks,
Hanfeng

On 12/21/2011 06:54 AM, Eli Friedman wrote:
> On Mon, Dec 19, 2011 at 10:13 PM, Hanfeng Qin<hanfengtsin at gmail.com>  wrote:
>> Hi all,
>> I am doing loop exit condition analysis. As the following sample code
>> segments demonstrated,
>>
>> ....
>> int *c =&a;
>> while (*c == 0);
>> ....
>>
>> I want to decide which variables are related to ending this spin-loop. E.g.,
>> in above sample, c is the direct variable while a is an indirect one. Does
>> LLVM provide any existing analysis tools or APIs I can leverage?
>> I am new to compiler optimization. Wish any body can give some suggestions.
> Well, first off, the given code isn't really a great example: LLVM
> will hoist the load out of the loop, and it will never exit.  I'll
> assume you meant to write "volatile int *c".
>
> For loop analysis in general, LLVM has an analysis called LoopInfo to
> find loops and compute some properties of them.  Your question isn't
> really specific enough to give a more detailed answer.
>
> -Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111221/b8429ed4/attachment.html>


More information about the llvm-dev mailing list