bootstrap: Fix building with GCC 4.2 [PR89494]
GCC 4.2 (but I think not the latest tip of GCC 4.2 branch) has broken value initialization, see PR33916. The following patch provides a workaround for that. Tested with GCC 4.2 on a reduced testcase I've distilled from the assign_param_data_one class which has been miscompiled the same. 2020-04-16 Jakub Jelinek <jakub@redhat.com> PR bootstrap/89494 * function.c (assign_parm_find_data_types): Add workaround for BROKEN_VALUE_INITIALIZATION compilers.
This commit is contained in:
parent
2ca17e0a89
commit
42e20fd25d
2 changed files with 14 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2020-04-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/89494
|
||||
* function.c (assign_parm_find_data_types): Add workaround for
|
||||
BROKEN_VALUE_INITIALIZATION compilers.
|
||||
|
||||
2020-04-16 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gdbhooks.py (TreePrinter): Print SSA_NAME_VERSION of SSA_NAME
|
||||
|
|
|
@ -2414,7 +2414,15 @@ assign_parm_find_data_types (struct assign_parm_data_all *all, tree parm,
|
|||
{
|
||||
int unsignedp;
|
||||
|
||||
#ifndef BROKEN_VALUE_INITIALIZATION
|
||||
*data = assign_parm_data_one ();
|
||||
#else
|
||||
/* Old versions of GCC used to miscompile the above by only initializing
|
||||
the members with explicit constructors and copying garbage
|
||||
to the other members. */
|
||||
assign_parm_data_one zero_data = {};
|
||||
*data = zero_data;
|
||||
#endif
|
||||
|
||||
/* NAMED_ARG is a misnomer. We really mean 'non-variadic'. */
|
||||
if (!cfun->stdarg)
|
||||
|
|
Loading…
Add table
Reference in a new issue