mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/48455 (Huge code size regression for all ARM configurations)
2011-11-23 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/48455 * doc/invoke.texi (-fira-region): Document default values. * flags-types.h (enum ira_region): Add new value IRA_REGION_AUTODETECT. * common.opt (fira-region): Set up initial value to IRA_REGION_AUTODETECT. * toplev.c (process_options): Set up flag_ira_region depending on -O options. * ira.c (ira.c): Remove optimize guard for ira_build. From-SVN: r181675
This commit is contained in:
parent
810fb8f1d6
commit
ffe8727f47
|
@ -1,3 +1,19 @@
|
|||
2011-11-23 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/48455
|
||||
* doc/invoke.texi (-fira-region): Document default values.
|
||||
|
||||
* flags-types.h (enum ira_region): Add new value
|
||||
IRA_REGION_AUTODETECT.
|
||||
|
||||
* common.opt (fira-region): Set up initial value to
|
||||
IRA_REGION_AUTODETECT.
|
||||
|
||||
* toplev.c (process_options): Set up flag_ira_region depending on
|
||||
-O options.
|
||||
|
||||
* ira.c (ira.c): Remove optimize guard for ira_build.
|
||||
|
||||
2011-11-23 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/50496
|
||||
|
|
|
@ -1337,7 +1337,7 @@ EnumValue
|
|||
Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
|
||||
|
||||
fira-region=
|
||||
Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_MIXED)
|
||||
Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT)
|
||||
-fira-region=[one|all|mixed] Set regions for IRA
|
||||
|
||||
Enum
|
||||
|
|
|
@ -6731,13 +6731,16 @@ rule generates a better code.
|
|||
Use specified regions for the integrated register allocator. The
|
||||
@var{region} argument should be one of @code{all}, @code{mixed}, or
|
||||
@code{one}. The first value means using all loops as register
|
||||
allocation regions, the second value which is the default means using
|
||||
all loops except for loops with small register pressure as the
|
||||
regions, and third one means using all function as a single region.
|
||||
The first value can give best result for machines with small size and
|
||||
irregular register set, the third one results in faster and generates
|
||||
decent code and the smallest size code, and the default value usually
|
||||
give the best results in most cases and for most architectures.
|
||||
allocation regions, the second value which is enabled by default when
|
||||
compiling with optimization for speed (@option{-O}, @option{-O2},
|
||||
@dots{}) means using all loops except for loops with small register
|
||||
pressure as the regions, and third one which is enabled by default for
|
||||
@option{-Os} or @option{-O0} means using all function as a single
|
||||
region. The first value can give best result for machines with small
|
||||
size and irregular register set, the third one results in faster and
|
||||
generates decent code and the smallest size code, and the second value
|
||||
usually give the best results in most cases and for most
|
||||
architectures.
|
||||
|
||||
@item -fira-loop-pressure
|
||||
@opindex fira-loop-pressure
|
||||
|
|
|
@ -118,7 +118,11 @@ enum ira_region
|
|||
{
|
||||
IRA_REGION_ONE,
|
||||
IRA_REGION_ALL,
|
||||
IRA_REGION_MIXED
|
||||
IRA_REGION_MIXED,
|
||||
/* This value means that there were no options -fira-region on the
|
||||
command line and that we should choose a value depending on the
|
||||
used -O option. */
|
||||
IRA_REGION_AUTODETECT
|
||||
};
|
||||
|
||||
/* The options for excess precision. */
|
||||
|
|
|
@ -3621,9 +3621,8 @@ ira (FILE *f)
|
|||
|
||||
if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL)
|
||||
fprintf (ira_dump_file, "Building IRA IR\n");
|
||||
loops_p = ira_build (optimize
|
||||
&& (flag_ira_region == IRA_REGION_ALL
|
||||
|| flag_ira_region == IRA_REGION_MIXED));
|
||||
loops_p = ira_build (flag_ira_region == IRA_REGION_ALL
|
||||
|| flag_ira_region == IRA_REGION_MIXED);
|
||||
|
||||
ira_assert (ira_conflicts_p || !loops_p);
|
||||
|
||||
|
|
|
@ -1333,6 +1333,11 @@ process_options (void)
|
|||
"and -ftree-loop-linear)");
|
||||
#endif
|
||||
|
||||
/* One region RA really helps to decrease the code size. */
|
||||
if (flag_ira_region == IRA_REGION_AUTODETECT)
|
||||
flag_ira_region
|
||||
= optimize_size || !optimize ? IRA_REGION_ONE : IRA_REGION_MIXED;
|
||||
|
||||
/* Unrolling all loops implies that standard loop unrolling must also
|
||||
be done. */
|
||||
if (flag_unroll_all_loops)
|
||||
|
|
Loading…
Reference in New Issue