From: Iain Buclaw Date: Tue, 23 Jun 2020 14:25:29 +0000 (+0200) Subject: d: Fix ICE in uda_attribute_p when looking up unknown attribute X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=62e02c8729a75c4a859edc18e0bcafb87d717f46;p=gcc.git d: Fix ICE in uda_attribute_p when looking up unknown attribute The target attribute table is not guaranteed to be set in all backends. gcc/d/ChangeLog: PR d/95173 * d-attribs.cc (uda_attribute_p): Don't search target attribute table if NULL. gcc/testsuite/ChangeLog: PR d/95173 * gdc.dg/pr95173.d: New test. --- diff --git a/gcc/d/d-attribs.cc b/gcc/d/d-attribs.cc index 964f59f96f4..f4086c0f0ee 100644 --- a/gcc/d/d-attribs.cc +++ b/gcc/d/d-attribs.cc @@ -216,10 +216,13 @@ uda_attribute_p (const char *name) return true; } - for (const attribute_spec *p = targetm.attribute_table; p->name; p++) + if (targetm.attribute_table) { - if (get_identifier (p->name) == ident) - return true; + for (const attribute_spec *p = targetm.attribute_table; p->name; p++) + { + if (get_identifier (p->name) == ident) + return true; + } } return false; diff --git a/gcc/testsuite/gdc.dg/pr95173.d b/gcc/testsuite/gdc.dg/pr95173.d new file mode 100644 index 00000000000..2a4b2ed8232 --- /dev/null +++ b/gcc/testsuite/gdc.dg/pr95173.d @@ -0,0 +1,10 @@ +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95173 +// { dg-do compile } +// { dg-options "-Wattributes" } + +import gcc.attribute; + +@attribute("foo") // { dg-warning "unknown attribute .foo." } +void f95173() +{ +}