[rs6000] Fix a wrong GC issue
The source file rs6000.c was split up into several smaller source files
through commit 1acf024
. However, variable "altivec_builtin_mask_for_load" and
"builtin_mode_to_type[MAX_MACHINE_MODE][2]" were marked with the wrong syntax
"GTY(([options])) type name", which led these two variables were not marked as
roots correctly and wrongly GCed. And when "altivec_builtin_mask_for_load"
was wrongly GCed, the compiling for openJDK is failed with ICEs enabling
precompiled header under mcpu=power7. So roots must be declared using one of
the following syntaxes: "extern GTY(([options])) type name;" and "static
GTY(([options])) type name;".
And the following patch adds variable "altivec_builtin_mask_for_load" and
"builtin_mode_to_type[MAX_MACHINE_MODE][2]" into the roots array.
Bootstrap and regression tests were done on powerpc64le-linux-gnu (LE) with no
regressions.
gcc/ChangeLog
2020-03-11 Bin Bin Lv <shlb@linux.ibm.com>
* config/rs6000/rs6000-internal.h (altivec_builtin_mask_for_load,
builtin_mode_to_type): Remove the declaration.
* config/rs6000/rs6000.h (altivec_builtin_mask_for_load,
builtin_mode_to_type): Add an extern GTY(()) declaration.
* config/rs6000/rs6000.c (altivec_builtin_mask_for_load,
builtin_mode_to_type): Remove the GTY(()) declaration.
This commit is contained in:
parent
9c1281d986
commit
f457ae2218
3 changed files with 5 additions and 4 deletions
|
@ -187,7 +187,5 @@ extern bool rs6000_passes_long_double;
|
|||
extern bool rs6000_passes_vector;
|
||||
extern bool rs6000_returns_struct;
|
||||
extern bool cpu_builtin_p;
|
||||
extern GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
|
||||
extern GTY(()) tree altivec_builtin_mask_for_load;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
#endif
|
||||
|
||||
/* Support targetm.vectorize.builtin_mask_for_load. */
|
||||
GTY(()) tree altivec_builtin_mask_for_load;
|
||||
tree altivec_builtin_mask_for_load;
|
||||
|
||||
#ifdef USING_ELFOS_H
|
||||
/* Counter for labels which are to be placed in .fixup. */
|
||||
|
@ -196,7 +196,7 @@ enum reg_class rs6000_constraints[RS6000_CONSTRAINT_MAX];
|
|||
int rs6000_vector_align[NUM_MACHINE_MODES];
|
||||
|
||||
/* Map selected modes to types for builtins. */
|
||||
GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
|
||||
tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
|
||||
|
||||
/* What modes to automatically generate reciprocal divide estimate (fre) and
|
||||
reciprocal sqrt (frsqrte) for. */
|
||||
|
|
|
@ -2490,6 +2490,9 @@ extern GTY(()) tree rs6000_builtin_types[RS6000_BTI_MAX];
|
|||
extern GTY(()) tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
|
||||
|
||||
#ifndef USED_FOR_TARGET
|
||||
extern GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
|
||||
extern GTY(()) tree altivec_builtin_mask_for_load;
|
||||
|
||||
/* A C structure for machine-specific, per-function data.
|
||||
This is added to the cfun structure. */
|
||||
typedef struct GTY(()) machine_function
|
||||
|
|
Loading…
Add table
Reference in a new issue