On Thu, Aug 11, 2016 at 02:03:37PM +0300, Yuri Rumyantsev wrote: > Hi All, > > Jakub introduced regression after r235764 and we got RF for > spec2000/176.gcc on HSW if loop vectorization is on (32-bit only). > Here is a simple fix which cures the issue. > > Is it OK for trunk? > ChangeLog: > 2016-08-11 Yuri Rumyantsev <ysrum...@gmail.com> > > PR rtl-optimization/71956 > * ipa-pure-const.c (check_call): Add missed check on MASK_STORE > builtin which can not be pure function.
This is weird. Even for MASK_STORE the comment IMHO still holds, there are no cgraph edges for internal calls, so it won't be processed as a call during ipa mode. Is the problem that the ipa-pure-const pass marks a function containing MASK_STORE still as const or pure, or doesn't mark something you want to mark, something else? At least in the non-ipa mode, I'd expect that a MASK_STORE to a (potential) non-local decl should be treated in this pass similarly to normal stores and similarly MASK_LOAD. I'm really surprised the ipa-pure-const pass sees these internal calls though, I thought they are introduced late (tree-if-conv) while ipa-pure-const runs during IPA opts far earlier, isn't that the case? Jakub