harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Naveen Neelakantam <neela...@uiuc.edu>
Subject Re: [drvm][jit] ABCD does not eliminate upper bound check
Date Fri, 20 Apr 2007 22:28:41 GMT

On Apr 17, 2007, at 12:34 AM, Mikhail Fursov wrote:

> On 4/17/07, Naveen Neelakantam <neelakan@uiuc.edu> wrote:
>>
>> But in general, other optimization passes can perform transformations
>> that break important dataflow relationships between variables.  This
>> sometimes makes it impossible for ABCD to prove that a particular
>> bounds check is redundant (ABCD uses "constraints", which are derived
>> from dataflow).
>>
>>
> Naveen, if any of optimizations we have can break ABCD with Maxim's  
> example,
> it worth to be analyzed. I hope there are no such optimizations in JIT
> today. If you know one we can proceed and check it: it may lead to
> additional improvements in ABCD algorithm.

I could not find a pass order that break's ABCD with Maxim's  
example.  However, I found a pass order using loop peeling that  
prevents bounds checks from being proven redundant with the  
BidirectionalBubbleSort example in HARMONY-1564.  The following pass  
order in opt.emconf will prevent 2 bounds checks from being proven  
redundant:
- 
XDjit.CS_OPT.path.optimizer=ssa,devirt,inline,uce,purge,simplify,dce,uce 
,lazyexc,memopt,simplify,dce,uce,dessa,statprof,peel,ssa,classic_abcd,lo 
wer,dessa,statprof,markglobals

Whereas these pass orders both work (and both use loop peeling):
- 
XDjit.CS_OPT.path.optimizer=ssa,devirt,inline,uce,purge,simplify,dce,uce 
,lazyexc,memopt,simplify,dce,uce,dessa,statprof,peel,ssa,memopt,classic_ 
abcd,lower,dessa,statprof,markglobals
- 
XDjit.CS_OPT.path.optimizer=ssa,devirt,inline,uce,purge,simplify,dce,uce 
,lazyexc,memopt,simplify,dce,uce,classic_abcd,dessa,statprof,peel,ssa,lo 
wer,dessa,statprof,markglobals

The takeaway is that classic_abcd should either be run before loop  
peeling, or if it runs after loop peeling, memopt should be run  
between it and loop peeling.

Naveen

>
> -- 
> Mikhail Fursov


Mime
View raw message