aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2010-08-20 22:08:41 +0000
committerOlivier Hainque <hainque@gcc.gnu.org>2010-08-20 22:08:41 +0000
commitb4d456ffc0f749c78b1b53fb3e296a248ff700dd (patch)
tree25a265db39729efa8d868a101c02397e6e62df3f /gcc/tree.h
parent39acb18f66f7b0ff8c36f5fa96e76168f959d2a1 (diff)
downloadgcc-b4d456ffc0f749c78b1b53fb3e296a248ff700dd.zip
gcc-b4d456ffc0f749c78b1b53fb3e296a248ff700dd.tar.gz
gcc-b4d456ffc0f749c78b1b53fb3e296a248ff700dd.tar.bz2
tree.h (alias_diag_flags): New enum.
* tree.h (alias_diag_flags): New enum. (alias_pair): Add an 'emitted_diags' field. * varasm.c (finish_aliases_1): Honor and update * p->emitted_diags. (assemble_alias): Initialize emitted_diags of new pairs. From-SVN: r163425
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 4b0078a..907fc3e 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -184,10 +184,21 @@ extern const char *const tree_code_name[];
of an alias. This requires that the decl have been defined. Aliases
that precede their definition have to be queued for later processing. */
+/* The deferred processing proceeds in several passes. We memorize the
+ diagnostics emitted for a pair to prevent repeating messages when the
+ queue gets re-scanned after possible updates. */
+
+typedef enum {
+ ALIAS_DIAG_NONE = 0x0,
+ ALIAS_DIAG_TO_UNDEF = 0x1,
+ ALIAS_DIAG_TO_EXTERN = 0x2
+} alias_diag_flags;
+
typedef struct GTY(()) alias_pair
{
tree decl;
- tree target;
+ tree target;
+ int emitted_diags; /* alias_diags already emitted for this pair. */
} alias_pair;
/* Define gc'd vector type. */