PR middle-end/78201
* varasm.c (default_use_anchors_for_symbol_p): Fix a comment typo.
Don't test decl != NULL. Don't look at DECL_SIZE, but DECL_SIZE_UNIT
instead, return false if it is NULL, or doesn't fit into uhwi, or
is larger or equal to targetm.max_anchor_offset.
* g++.dg/opt/pr78201.C: New test.
From-SVN: r242555
+2016-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/78201
+ * varasm.c (default_use_anchors_for_symbol_p): Fix a comment typo.
+ Don't test decl != NULL. Don't look at DECL_SIZE, but DECL_SIZE_UNIT
+ instead, return false if it is NULL, or doesn't fit into uhwi, or
+ is larger or equal to targetm.max_anchor_offset.
+
2016-11-17 Pip Cet <pipcet@gmail.com>
Eric Botcazou <ebotcazou@adacore.com>
+2016-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/78201
+ * g++.dg/opt/pr78201.C: New test.
+
2016-11-17 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.dg/pr78333.c: Add empty implementations of
--- /dev/null
+// PR middle-end/78201
+// { dg-do compile }
+// { dg-options "-O2" }
+
+struct B { long d (); } *c;
+long e;
+
+void
+foo ()
+{
+ char a[e] = "";
+ c && c->d();
+}
return false;
/* Don't use section anchors for decls that won't fit inside a single
- anchor range to reduce the amount of instructions require to refer
+ anchor range to reduce the amount of instructions required to refer
to the entire declaration. */
- if (decl && DECL_SIZE (decl)
- && tree_to_shwi (DECL_SIZE (decl))
- >= (targetm.max_anchor_offset * BITS_PER_UNIT))
+ if (DECL_SIZE_UNIT (decl) == NULL_TREE
+ || !tree_fits_uhwi_p (DECL_SIZE_UNIT (decl))
+ || (tree_to_uhwi (DECL_SIZE_UNIT (decl))
+ >= (unsigned HOST_WIDE_INT) targetm.max_anchor_offset))
return false;
}