Fix calculation of ptr_mode for MODE_PARTIAL_INT Pmode
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 22 Nov 2017 13:58:20 +0000 (13:58 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 22 Nov 2017 13:58:20 +0000 (13:58 +0000)
This patch fixes a regression caused by r251469, where I'd incorrectly
converted a call to mode_for_size that sometimes needs MODE_PARTIAL_INTs.

2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
has the same mode class as Pmode.

From-SVN: r255057

gcc/ChangeLog
gcc/emit-rtl.c

index 24190a70d4e23282bbba0cd9e761fe9662930dfe..ed0dc478547642119bfdf88a7ac52aff3f137943 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
+       has the same mode class as Pmode.
+
 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
index a076711643618c7f95b2d6d8eb8dedc21369ed8d..428e4743454f78616a22ae89d466db8b84899575 100644 (file)
@@ -6003,7 +6003,8 @@ init_derived_machine_modes (void)
 
   byte_mode = opt_byte_mode.require ();
   word_mode = opt_word_mode.require ();
-  ptr_mode = int_mode_for_size (POINTER_SIZE, 0).require ();
+  ptr_mode = as_a <scalar_int_mode>
+    (mode_for_size (POINTER_SIZE, GET_MODE_CLASS (Pmode), 0).require ());
 }
 
 /* Create some permanent unique rtl objects shared between all functions.  */