diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2020-11-22 11:19:32 +0000 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2020-11-22 12:56:20 +0000 |
commit | 3c52cd517a34b6b37eb17d4defd63bb31e60888b (patch) | |
tree | f7411892abebdc254d75d4de7046e3c4a12cebef /gcc | |
parent | 7a97e2fcf7ca91b77686373ebfb2263a28885570 (diff) | |
download | gcc-3c52cd517a34b6b37eb17d4defd63bb31e60888b.zip gcc-3c52cd517a34b6b37eb17d4defd63bb31e60888b.tar.gz gcc-3c52cd517a34b6b37eb17d4defd63bb31e60888b.tar.bz2 |
Darwin : Avoid a C++ ODR violation seen with LTO.
We have a similar code pattern in darwin-c.c to one in c-pragmas
(most likely a cut & paste) with a struct type used locally to the
TU. With C++ we need to rename the type to avoid an ODR violation.
gcc/ChangeLog:
* config/darwin-c.c (struct f_align_stack): Rename
to type from align_stack to f_align_stack.
(push_field_alignment): Likewise.
(pop_field_alignment): Likewise.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/darwin-c.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index 9034f49..9617230 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -44,13 +44,12 @@ static bool using_frameworks = false; static const char *find_subframework_header (cpp_reader *pfile, const char *header, cpp_dir **dirp); -typedef struct align_stack -{ - int alignment; - struct align_stack * prev; -} align_stack; +struct fld_align_stack { + int alignment; + struct fld_align_stack * prev; +}; -static struct align_stack * field_align_stack = NULL; +static struct fld_align_stack * field_align_stack; /* Maintain a small stack of alignments. This is similar to pragma pack's stack, but simpler. */ @@ -58,7 +57,7 @@ static struct align_stack * field_align_stack = NULL; static void push_field_alignment (int bit_alignment) { - align_stack *entry = XNEW (align_stack); + fld_align_stack *entry = XNEW (fld_align_stack); entry->alignment = maximum_field_alignment; entry->prev = field_align_stack; @@ -72,7 +71,7 @@ pop_field_alignment (void) { if (field_align_stack) { - align_stack *entry = field_align_stack; + fld_align_stack *entry = field_align_stack; maximum_field_alignment = entry->alignment; field_align_stack = entry->prev; |