Hi!

In this case we create
  temp = .MUL_OVERFLOW (arg1, arg2);
  temp2 = REALPART_EXPR <temp>;
  temp3 = IMAGPART_EXPR <temp>;
x86 has been happy in the testing even without the following patch,
though temp hasn't been rewritten into SSA, but on various other targets
the expansion assumes that .???_OVERFLOW result must be a SSA_NAME.

Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
committed to trunk.

2019-07-04  Jakub Jelinek  <ja...@redhat.com>

        PR tree-optimization/91074
        * omp-low.c (lower_omp_for_scan): Set DECL_GIMPLE_REG_P on cplx
        temporary.

--- gcc/omp-low.c.jj    2019-07-03 07:02:16.460989884 +0200
+++ gcc/omp-low.c       2019-07-03 16:59:25.819391742 +0200
@@ -9699,6 +9699,7 @@ lower_omp_for_scan (gimple_seq *body_p,
   gimple_seq_add_stmt (body_p, g);
 
   tree cplx = create_tmp_var (build_complex_type (unsigned_type_node, false));
+  DECL_GIMPLE_REG_P (cplx) = 1;
   g = gimple_build_call_internal (IFN_MUL_OVERFLOW, 2, thread_nump1, twok);
   gimple_call_set_lhs (g, cplx);
   gimple_seq_add_stmt (body_p, g);

        Jakub

Reply via email to