Hi! On Tue, Mar 03, 2020 at 09:40:47AM -0600, Bin Bin Lv wrote: > 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.
> 2020-03-03 Bin Bin Lv <s...@linux.ibm.com> > > * config/rs6000/rs6000-internal.h (altivec_builtin_mask_for_load, > builtin_mode_to_type[MAX_MACHINE_MODE][2]): Remove GTY(()). > * config/rs6000/rs6000.h (altivec_builtin_mask_for_load, > builtin_mode_to_type[MAX_MACHINE_MODE][2]): Add an extern GTY(()) > declaration. Why in both of the header files? Can you just remove the declaration from rs6000-internal.h? > * config/rs6000/rs6000.h (MAX_MACHINE_MODE): Include the header file > for MAX_MACHINE_MODE. The changelog entry should say *what* file is included, and under what condition. It doesn't have to say why (that belongs in the commit message). But, can't you just include it unconditionally? Don't we already, anyway, via coretypes.h -> machmode.h -> insn-modes.h? Segher