Commit 3bce7904 by Richard Sandiford

calls: Remove FIXME for cxx17_empty_base_field_p

This predicate is now used by aarch64 targets.

2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* calls.h (cxx17_empty_base_field_p): Turn into a function declaration.
	* calls.c (cxx17_empty_base_field_p): New function.  Check
	DECL_ARTIFICIAL and RECORD_OR_UNION_TYPE_P in addition to the
	previous checks.
parent 9be3bb2c
2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
* calls.h (cxx17_empty_base_field_p): Turn into a function declaration.
* calls.c (cxx17_empty_base_field_p): New function. Check
DECL_ARTIFICIAL and RECORD_OR_UNION_TYPE_P in addition to the
previous checks.
2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
PR target/93654
......
......@@ -6261,5 +6261,20 @@ must_pass_va_arg_in_stack (tree type)
return targetm.calls.must_pass_in_stack (arg);
}
/* Return true if FIELD is the C++17 empty base field that should
be ignored for ABI calling convention decisions in order to
maintain ABI compatibility between C++14 and earlier, which doesn't
add this FIELD to classes with empty bases, and C++17 and later
which does. */
bool
cxx17_empty_base_field_p (const_tree field)
{
return (DECL_FIELD_ABI_IGNORED (field)
&& DECL_ARTIFICIAL (field)
&& RECORD_OR_UNION_TYPE_P (TREE_TYPE (field))
&& !lookup_attribute ("no_unique_address", DECL_ATTRIBUTES (field)));
}
/* Tell the garbage collector about GTY markers in this source file. */
#include "gt-calls.h"
......@@ -135,9 +135,6 @@ extern tree get_attr_nonstring_decl (tree, tree * = NULL);
extern void maybe_warn_nonstring_arg (tree, tree);
extern bool get_size_range (tree, tree[2], bool = false);
extern rtx rtx_for_static_chain (const_tree, bool);
/* FIXME: Remove after all backends are converted. */
#define cxx17_empty_base_field_p(t) \
(DECL_FIELD_ABI_IGNORED (t) \
&& !lookup_attribute ("no_unique_address", DECL_ATTRIBUTES (t)))
extern bool cxx17_empty_base_field_p (const_tree);
#endif // GCC_CALLS_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment