[PATCH v1] Widening-Mul: Fix one ICE of gcall insertion for PHI match
Jeff Law
jeffreyalaw@gmail.com
Mon Jun 10 20:15:04 GMT 2024
On 6/10/24 8:49 AM, pan2.li@intel.com wrote:
> When enabled the PHI handing for COND_EXPR, we need to insert the gcall
> to replace the PHI node. Unfortunately, I made a mistake that insert
> the gcall to before the last stmt of the bb. See below gimple, the PHI
> is located at no.1 but we insert the gcall (aka no.9) to the end of
> the bb. Then the use of _9 in no.2 will have no def and will trigger
> ICE when verify_ssa.
>
> 1. # _9 = PHI <_3(4), 18446744073709551615(3)> // The PHI node to be deleted.
> 2. prephitmp_36 = (char *) _9;
> 3. buf.write_base = string_13(D);
> 4. buf.write_ptr = string_13(D);
> 5. buf.write_end = prephitmp_36;
> 6. buf.written = 0;
> 7. buf.mode = 3;
> 8. _7 = buf.write_end;
> 9. _9 = .SAT_ADD (string.0_2, maxlen_15(D)); // Insert gcall to last bb by mistake
>
> This patch would like to insert the gcall to before the start of the bb
> stmt. To ensure the possible use of PHI_result will have a def exists.
> After this patch the above gimple will be:
>
> 0. _9 = .SAT_ADD (string.0_2, maxlen_15(D)); // Insert gcall to start bb by mistake
> 1. # _9 = PHI <_3(4), 18446744073709551615(3)> // The PHI node to be deleted.
> 2. prephitmp_36 = (char *) _9;
> 3. buf.write_base = string_13(D);
> 4. buf.write_ptr = string_13(D);
> 5. buf.write_end = prephitmp_36;
> 6. buf.written = 0;
> 7. buf.mode = 3;
> 8. _7 = buf.write_end;
>
> The below test suites are passed for this patch:
> * The rv64gcv fully regression test with newlib.
> * The rv64gcv build with glibc.
> * The x86 regression test with newlib.
> * The x86 bootstrap test with newlib.
>
> PR target/115387
>
> gcc/ChangeLog:
>
> * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children): Take
> the gsi of start_bb instead of last_bb.
>
> gcc/testsuite/ChangeLog:
>
> * gcc.target/riscv/pr115387-1.c: New test.
> * gcc.target/riscv/pr115387-2.c: New test.
I did a fresh x86_64 bootstrap and regression test and pushed this.
jeff
More information about the Gcc-patches
mailing list