On Mon, Nov 9, 2015 at 12:13 PM, Eric Botcazou <ebotca...@adacore.com> wrote: > Hi, > > I don't understand how this didn't show up sooner given the amount of testing, > but there is a nasty overloading for the new REF_REVERSE_STORAGE_ORDER flag: > > #define REF_REVERSE_STORAGE_ORDER(NODE) \ > (TREE_CHECK2 (NODE, BIT_FIELD_REF, MEM_REF)->base.u.bits.saturating_flag) > > saturating_flag is part of the 'bits' structure, which is itself part of the > 'u' union, which also contains the dependence_info structure, and: > > #define MR_DEPENDENCE_CLIQUE(NODE) \ > (TREE_CHECK2 (NODE, MEM_REF, TARGET_MEM_REF)->base.u.dependence_info.clique) > #define MR_DEPENDENCE_BASE(NODE) \ > (TREE_CHECK2 (NODE, MEM_REF, TARGET_MEM_REF)->base.u.dependence_info.base) > > So there is a conflict on MEM_REF nodes. Therefore the attached patch changes > REF_REVERSE_STORAGE_ORDER to use the default_def_flag instead. > > Tested on x86_64-suse-linux, OK for the mainline? I'll install the Fortran > testcase once it is reduced because it takes a while to compile ATM.
Looks good to me. I wonder where you store the info on TARGET_MEM_REFs though? Or is IVOPTs prohibited from messing with such refs (pessmizing them)? Thanks, Richard. > > 2015-11-09 Eric Botcazou <ebotca...@adacore.com> > > PR middle-end/68251 > * tree-core.h (REF_REVERSE_STORAGE_ORDER): Move around. > * tree.h (REF_REVERSE_STORAGE_ORDER): Change to default_def_flag. > * tree-streamer-in.c (unpack_ts_base_value_fields): Adjust. > * tree-streamer-out.c (pack_ts_base_value_fields): Likewise. > > -- > Eric Botcazou