From 62e02c8729a75c4a859edc18e0bcafb87d717f46 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Tue, 23 Jun 2020 16:25:29 +0200 Subject: [PATCH] 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. --- gcc/d/d-attribs.cc | 9 ++++++--- gcc/testsuite/gdc.dg/pr95173.d | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gdc.dg/pr95173.d diff --git a/gcc/d/d-attribs.cc b/gcc/d/d-attribs.cc index 964f59f..f4086c0 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 0000000..2a4b2ed --- /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() +{ +} -- 2.7.4