Re: GCC won`t emit my instriction
Alex Hill via gcc-help
Mon Jun 17 11:34:00 GMT 2019
>Среда, 12 июня 2019, 1:54 +05:00 от Jim Wilson <email@example.com>:
>On Tue, Jun 11, 2019 at 1:32 AM Alex Hill < firstname.lastname@example.org > wrote:
>> BUT! In case we using IF loop GCC wont emit minmax AGAIN!
>It looks like the memory accesses are the problem, not the control
>flow. However, the control flow may be affecting exactly how the
>compiler optimizes the memory references. If you create a temporary
>variable, store the result in the temporary variable, and then write
>the temporary variable to memory at the end, it should be optimized
>regardless of control flow.
>> what`s the difference between
>> (reg:DI 113 [ ivtmp.29 ]) [1 MEM[base: _39, offset: 0B]+0 S8 A64])
>> (reg/f:DI 89 [ _48 ]) [1 *_48+0 S8 A64])
>_ivtmp.29 and _48 are variable names. In both cases, these are
>variable names created by high level optimization passes. See the
>-fdump-tree-all output, and look at the last one before the conversion
>The MEM is giving alias analysis info. A is the alignment, S is the
>size. The first number is the alias set, where alias set 0 aliases
>everything, and other numbers only alias values in the same alias set.
>The MEM is the original base and offset for this address, where _39 is
>again a compiler generated variable. You can find the code that
>prints this stuff in print-rtl.c, and then you probably need to look
>at the alias analysis code if you want to know more.
>See also the noce_try_minmax function I pointed at earlier, to see why
>it works in one case but not in another case.
I`m still looking for the way to emit minmax, now i`m try to find solution in
ifcvt.c, is there exist a way to dump conditional execution step by step,
i`m interesting in functions:
df_analyze in df-core.c
noce_process_if_block in ifcvt.c
noce_try_minmax in ifcvt.c
I read more than thousand pages from documents from gnu.gcc.org, try to find in internet but i can`t find how to dump
every step of rtl passes, for example 243.r.ce1, there is only general info in dumps receivced by fdump-rtl-all.
In 243.r.ce1 just told "df_analyze called" and nothing else.
Sorry for my Engrish
Kind regards Alex Hill.
More information about the Gcc-help