Add missing varasm DECL_P check.
authorJim Wilson <jimw@sifive.com>
Thu, 10 Dec 2020 02:57:32 +0000 (18:57 -0800)
committerJim Wilson <jimw@sifive.com>
Fri, 11 Dec 2020 19:14:22 +0000 (11:14 -0800)
This fixes a riscv64-linux bootstrap failure.

get_constant_section calls the select_section target hook, and select_section
calls get_named_section which calls get_section.  So it is possible to have
a constant not a decl in both of these functions.  They already call DECL_P
checks everywhere except for the new code HJ recently added.  This adds the
missing DECL_P check.

gcc/
* varasm.c (get_section): Add DECL_P check before DECL_PRESERVE_P.

gcc/varasm.c

index 0fac36888287f07624a6f244a4d9cc48c40efecc..5b2e123b0da470a96a0e334108424a60234cd4db 100644 (file)
@@ -294,6 +294,7 @@ get_section (const char *name, unsigned int flags, tree decl,
   flags |= SECTION_NAMED;
   if (HAVE_GAS_SHF_GNU_RETAIN
       && decl != nullptr
+      && DECL_P (decl)
       && DECL_PRESERVE_P (decl))
     flags |= SECTION_RETAIN;
   if (*slot == NULL)