This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Missed optimization in PRE?


On Thu, Mar 29, 2012 at 12:02 PM, Bin.Cheng <amker.cheng@gmail.com> wrote:
> Hi,
> Following is the tree dump of 094t.pre for a test program.
> Question is loads of D.5375_12/D.5375_14 are redundant on path <bb2,
> bb7, bb5, bb6>,
> but why not lowered into basic block 3, where it is used.
>
> BTW, seems no tree pass handles this case currently.

tree-ssa-sink.c should do this.

> Any idea? Thanks
>
> ?int z$imag;
> ?int z$real;
> ?int D.5378;
> ?int D.5377;
> ?int D.5376;
> ?int D.5375;
>
> <bb 2>:
> ?D.5375_11 = REALPART_EXPR <g2>;
> ?D.5376_12 = IMAGPART_EXPR <g2>;
> ?D.5377_13 = REALPART_EXPR <g3>;
> ?D.5378_14 = IMAGPART_EXPR <g3>;
> ?if (D.5375_11 == D.5377_13)
> ? ?goto <bb 3>;
> ?else
> ? ?goto <bb 7>;
>
> <bb 3>:
> ?if (D.5376_12 == D.5378_14)
> ? ?goto <bb 4>;
> ?else
> ? ?goto <bb 7>;
>
> <bb 4>:
> ?z$real_15 = REALPART_EXPR <g1>;
> ?z$imag_16 = IMAGPART_EXPR <g1>;
> ?goto <bb 6>;
>
> <bb 7>:
>
> <bb 5>:
> ?z$real_17 = REALPART_EXPR <g4>;
> ?z$imag_18 = IMAGPART_EXPR <g4>;
>
> <bb 6>:
> ?# z$real_19 = PHI <z$real_15(4), z$real_17(5)>
> ?# z$imag_20 = PHI <z$imag_16(4), z$imag_18(5)>
> ?REALPART_EXPR <g1> = z$real_19;
> ?IMAGPART_EXPR <g1> = z$imag_20;
> ?return 0;
>
> --
> Best Regards.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]