Can gatekeeper help review this fix?

loop multi-version maintain CFG has bug, cause assertion when emit WHIRL
tree.

https://bugs.open64.net/show_bug.cgi?id=754

Loop multi-version transformation insert a pre-condition BB before
loop header BB.

If loop header BB is if_BB’s merge BB, need change if BB’s merge BB to
newly inserted pre-condition BB. with attached simple case loop
multi-version doesn’t update the if_BB’s merge_BB correctly.

Original implementation is searching IDOM for loop header BB ß,  if
idom BB is if_BB and its if_merge BB is ß, change its if_merge BB to
pre-condition BB.



This simple test case has if statement followed by a multi-version optimized
loop. And if statement has EH region in its body, cause if_merge BB not
dominated by if BB.



Fix is in CFG::LMV_gen_precondioning_stuff, search all the BBs, find an
if_BB whose merge BB is original loop header BB, change its if_merge BB to
pre-condition BB.

Attachment: lmv.patch
Description: Binary data

------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to