Fix ALL_REGS thinko in initialisation of function_used_regs
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 2 Oct 2019 21:19:35 +0000 (21:19 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 2 Oct 2019 21:19:35 +0000 (21:19 +0000)
My change to the -fipa-ra bookkeeping used ALL_REGS as the supposedly
safe default assumption, but ALL_REGS isn't literally all registers,
just a close approximation.

This caused a bootstrap failure on arm-linux-gnu, where the condition
code register isn't in ALL_REGS and so was being masked out of some
call-clobbered sets.

2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* cgraph.c (cgraph_node::rtl_info): Use SET_HARD_REG_SET
instead of reg_class_contents[ALL_REGS].

From-SVN: r276489

gcc/ChangeLog
gcc/cgraph.c

index c7773c5..fb0c366 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * cgraph.c (cgraph_node::rtl_info): Use SET_HARD_REG_SET
+       instead of reg_class_contents[ALL_REGS].
+
 2019-09-30  Jason Merrill  <jason@redhat.com>
 
        Add some hash_map_safe_* functions like vec_safe_*.
index 7748cef..0c3c6e7 100644 (file)
@@ -1866,7 +1866,7 @@ cgraph_node::rtl_info (const_tree decl)
   if (node->rtl == NULL)
     {
       node->rtl = ggc_cleared_alloc<cgraph_rtl_info> ();
-      node->rtl->function_used_regs = reg_class_contents[ALL_REGS];
+      SET_HARD_REG_SET (node->rtl->function_used_regs);
     }
   return node->rtl;
 }