This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][4.3][RFC] Disable field-sensitive aliasing at -O1 (fix PR36474)


Sounds like a good idea to me. I can't think of any reason SFT's
should be on at O1.

On Mon, Jun 9, 2008 at 9:10 AM, Richard Guenther <rguenther@suse.de> wrote:
>
> PR36474 is another case where silly big source code is taking ages to
> build with basic optimization (-O1) and uses unreasonable amount of
> memory (I aborted the compile after 15mins when it was starting to run
> into swap on a 3GB machine).
>
> This is likely a fallout from the aliasing-with-SFT fixes that forces
> some of the SFTs to be unpartitioned.  Disabling SFTs makes the testcase
> build almost instantly even with -O2.
>
> Thus I propose to disable SFTs on the 4.3 branch _for -O1 only_ with
> the reason that -O1 should be a usable fallback for compile-time and
> memory-usage problems.  I'd declare -O2 WONTFIX for the branch though
> (I don't want to spend the time to eventually tune the value for
> max-fields-for-field-sensitive -- the specific testcase is fine with
> 32 but not with 64, though I guess it's simply a lot of temporaries
> of the same type that is decomposed with 64 but not with 32).
>
> Thoughts?  I'll see to not break any testcases, so eventually the
> zero for max-fields-for-field-sensitive will become N << 100
> (which is the default now).
>
> Thanks,
> Richard.
>
> 2008-06-09  Richard Guenther  <rguenther@suse.de>
>
>        PR tree-optimization/36474
>        * opts.c (decode_options): Set max-fields-for-field-sensitive
>        parameter to 100 for -O2, -Os and -O3.
>        * params.def (max-fields-for-field-sensitive): Set default to zero.
>        * doc/invoke.texi (max-fields-for-field-sensitive): Document
>        defaults.
>
> Index: gcc/opts.c
> ===================================================================
> *** gcc/opts.c  (revision 136500)
> --- gcc/opts.c  (working copy)
> *************** decode_options (unsigned int argc, const
> *** 846,851 ****
> --- 846,854 ----
>
>        /* Allow more virtual operators to increase alias precision.  */
>        set_param_value ("max-aliased-vops", 500);
> +
> +       /* Track fields in field-sensitive alias analysis.  */
> +       set_param_value ("max-fields-for-field-sensitive", 100);
>      }
>
>    if (optimize >= 3)
> Index: gcc/params.def
> ===================================================================
> *** gcc/params.def      (revision 136500)
> --- gcc/params.def      (working copy)
> *************** DEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICAT
> *** 652,658 ****
>  DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
>            "max-fields-for-field-sensitive",
>          "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable",
> !         100, 0, 0)
>
>  DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
>         "max-sched-ready-insns",
> --- 652,658 ----
>  DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
>            "max-fields-for-field-sensitive",
>          "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable",
> !         0, 0, 0)
>
>  DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
>         "max-sched-ready-insns",
> Index: gcc/doc/invoke.texi
> ===================================================================
> *** gcc/doc/invoke.texi (revision 136500)
> --- gcc/doc/invoke.texi (working copy)
> *************** duplicated when threading jumps.
> *** 7270,7276 ****
>
>  @item max-fields-for-field-sensitive
>  Maximum number of fields in a structure we will treat in
> ! a field sensitive manner during pointer analysis.
>
>  @item prefetch-latency
>  Estimate on average number of instructions that are executed before
> --- 7270,7277 ----
>
>  @item max-fields-for-field-sensitive
>  Maximum number of fields in a structure we will treat in
> ! a field sensitive manner during pointer analysis.  The default is zero
> ! for -O0, and -O1 and 100 for -Os, -O2, and -O3.
>
>  @item prefetch-latency
>  Estimate on average number of instructions that are executed before
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]