Re: Sparse-llvm question regarding handling of phi/phsrc instructions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luc,

On 7 September 2017 at 21:33, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote:
> On 7 September 2017 at 21:25, Luc Van Oostenryck
> <luc.vanoostenryck@xxxxxxxxx> wrote:
>> 2017-09-07 18:04 GMT+02:00 Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx>:
>>> The following code snippet:
>>>
>>> static int test_do(void) {
>>>     int a = 0;
>>>     int count = 27;
>>>     switch (count % 8) {
>>>     case 0: do {  a++;
>>>     case 7:       a++;
>>>     case 6:       a++;
>>>     case 5:       a++;
>>>     case 4:       a++;
>>>     case 3:       a++;
>>>     case 2:       a++;
>>>     case 1:       a++;
>>>             } while ((count -= 8) > 0);
>>>     }
>>>     return a;
>>> }
>>>
>>> Results in following linear output:
>>>
>>> test_do:
>>> .L0:
>>>         <entry-point>
>>>         phisrc.32   %phi3(a) <- $0
>>>         phisrc.32   %phi4(a) <- $0
>>>         phisrc.32   %phi6(a) <- $0
>>>         phisrc.32   %phi8(a) <- $0
>>>         phisrc.32   %phi10(a) <- $0
>>>         phisrc.32   %phi12(a) <- $0
>>>         phisrc.32   %phi14(a) <- $0
>>>         phisrc.32   %phi16(a) <- $0
>>>         phisrc.32   %phi18(a) <- $0
>>>         phisrc.32   %phi20(count) <- $27
>>>         br          .L7
>>>
>>> .L10:
>>>         phi.32      %r3 <- %phi18(a), %phi19(a)
>>>         add.32      %r4 <- %r3, $1
>>>         phisrc.32   %phi17(a) <- %r4
>>>         phi.32      %r5 <- %phi16(a), %phi17(a)
>>> ...
>>>
>>> It seems to me that 'a' ends up having 9 different slots on the stack,
>>> but it should really be merged into one slot, i.e. we should detect
>>> that the phis all related to the same symbol, and create only one
>>> alloca?
>>
>>

What is also interesting is that in the old way by switching off the
simplifications the generated code avoids all the phis and is actually
simpler in terms of memory operations in the backend. Now LLVM can
sort this out easily as it transforms this to use phis anyway, but my
other backend is simpler, and for that non SSA version is better.

Regards
Dibyendu
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux