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.
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