This is the mail archive of the gcc-patches@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: PING: PATCH [4/n]: Prepare x32: Permute the conversion and addition if one operand is a constant


Ok, you removed ignore_address_wrap_around, so we're almost there.

On 07/28/2011 07:59 PM, H.J. Lu wrote:
@@ -712,7 +715,16 @@ convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int uns
    if (GET_CODE (x) == SUBREG&&  SUBREG_PROMOTED_VAR_P (x)
        &&  GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))>= GET_MODE_SIZE (mode)
        &&  SUBREG_PROMOTED_UNSIGNED_P (x) == unsignedp)
-    x = gen_lowpart (mode, x);
+    {
+      temp = rtl_hooks.gen_lowpart_no_emit (mode, x);
+      if (temp)
+	x = temp;
+      else
+	{
+	  gcc_assert (!no_emit);
+	  x = gen_lowpart (mode, x);
+	}
+    }

+ { + /* gen_lowpart_no_emit should always succeed here. */ + x = rtl_hooks.gen_lowpart_no_emit (mode, x); + }


if (GET_MODE (x) != VOIDmode) oldmode = GET_MODE (x); @@ -776,6 +788,10 @@ convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int uns return gen_int_mode (val, mode); }

+      temp = rtl_hooks.gen_lowpart_no_emit (mode, x);
+      if (temp)
+	return temp;
+      gcc_assert (!no_emit);
        return gen_lowpart (mode, x);

Right now, gen_lowpart_no_emit will never return NULL, so these tests in convert_modes are dead. Instead, please include in your patch mine at http://permalink.gmane.org/gmane.comp.gcc.patches/242085 and adjust as follows.


+      temp = rtl_hooks.gen_lowpart_no_emit (mode, x);
+      if (no_emit)
+	 return rtl_hooks.gen_lowpart_no_emit (mode, x);
+      else
+        return gen_lowpart (mode, x);

}

If it does not work, PLEASE say why instead of posting another "updated patch".


Paolo


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