2015-11-13 13:03 GMT+03:00 Richard Biener <richard.guent...@gmail.com>:
> On Thu, Nov 12, 2015 at 5:08 PM, Ilya Enkovich <enkovich....@gmail.com> wrote:
>> Hi,
>>
>> When we use LTO for fortran we may have a mix 32bit and 1bit scalar 
>> booleans. It means we may have conversion of one scalar type to another 
>> which confuses vectorizer because values with different scalar boolean type 
>> may get the same vectype.
>
> Confuses aka fails to vectorize?

Right.

>
>>  This patch transforms such conversions into comparison.
>>
>> I managed to make a small fortran test which gets vectorized with this patch 
>> but I didn't find how I can run fortran test with LTO and then scan tree 
>> dump to check it is vectorized.  BTW here is a loop from the test:
>>
>>       real*8 a(18)
>>       logical b(18)
>>       integer i
>>
>>       do i=1,18
>>          if(a(i).gt.0.d0) then
>>             b(i)=.true.
>>          else
>>             b(i)=.false.
>>          endif
>>       enddo
>
> This looks the the "error" comes from if-conversion - can't we do
> better there then?

No, this loop is transformed into a single BB before if-conversion by
cselim + phiopt.

Ilya

>
> Richard.
>
>> Bootstrapped and tested on x86_64-unknown-linux-gnu.  OK for trunk?
>>
>> Thanks,
>> Ilya

Reply via email to