On Thu, Mar 10, 2016 at 5:24 AM, Richard Biener
<richard.guent...@gmail.com> wrote:
> On Thu, Mar 10, 2016 at 2:16 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> On Thu, Mar 10, 2016 at 5:01 AM, Richard Biener
>> <richard.guent...@gmail.com> wrote:
>>> On Thu, Mar 10, 2016 at 1:48 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>> convert_scalars_to_vector in i386.c calls
>>>>
>>>> calculate_dominance_info (CDI_DOMINATORS);
>>>>
>>>> Shouldn't it call
>>>>
>>>> free_dominance_info (CDI_DOMINATORS);
>>>>
>>>> after it is done like other places where calculate_dominance_info is used?
>>>
>>> Only if it invalidates it.   Other than post-dominator info dominator
>>> info is kept
>>> up-to-date between passes.
>>>
>>>> When I extend the STV pass to 64-bit and put the 64-bit STV pass before
>>>> the CSE pass, I run into
>>>>
>>>> gcc_assert (!dom_info_available_p (CDI_DOMINATORS));
>>>
>>> That looks like a bogus assert to me.  Which one is it?  The one in
>>> cfgcleanup.c?
>>> In that case something else should have freed it (the thing that
>>> doesn't preserve it)
>>> or the condition the assert is guarded is "incorrect".
>>
>> cleanup_cfg has
>>
>>  /* ???  We probably do this way too often.  */
>>   if (current_loops
>>       && (changed
>>           || (mode & CLEANUP_CFG_CHANGED)))
>>     {
>>       timevar_push (TV_REPAIR_LOOPS);
>>       /* The above doesn't preserve dominance info if available.  */
>>       gcc_assert (!dom_info_available_p (CDI_DOMINATORS));
>>       calculate_dominance_info (CDI_DOMINATORS);
>>       fix_loop_structure (NULL);
>>       free_dominance_info (CDI_DOMINATORS);
>>       timevar_pop (TV_REPAIR_LOOPS);
>>     }
>>
>> Should assert be removed?
>
> I think these days we can safely remove it as calculate_dominance_info
> will ICE if dom info is said to be present but is incorrect.  I put in
> the assert
> to catch this case before we had that.

Remove that assert doesn't solve all problems.  Now I got

0x98483a verify_dominators(cdi_direction)
        /export/gnu/import/git/sources/gcc/gcc/dominance.c:1038
0x982591 checking_verify_dominators
        /export/gnu/import/git/sources/gcc/gcc/dominance.h:71
0x983d27 calculate_dominance_info(cdi_direction)
        /export/gnu/import/git/sources/gcc/gcc/dominance.c:664
0x1742a20 fwprop_init
        /export/gnu/import/git/sources/gcc/gcc/fwprop.c:1393
0x1742cf8 fwprop_addr
        /export/gnu/import/git/sources/gcc/gcc/fwprop.c:1511
0x1742e60 execute
        /export/gnu/import/git/sources/gcc/gcc/fwprop.c:1557
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
Makefile:612: recipe for target 'bid128_fma.o' failed
make[2]: *** [bid128_fma.o] Error 1

if convert_scalars_to_vector doesn't call

free_dominance_info (CDI_DOMINATORS);

-- 
H.J.

Reply via email to