diff options
author | Jan Hubicka <jh@suse.cz> | 2003-12-23 18:55:33 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-12-23 17:55:33 +0000 |
commit | a8a5f53add9eb69aa49b92622e74e3b091d6b386 (patch) | |
tree | a3f9b4f94640a92d66ad7856e0e19eb1b7435ae0 /gcc/opts.c | |
parent | 57702a80e805859260710953242bf87c08f5c410 (diff) | |
download | gcc-a8a5f53add9eb69aa49b92622e74e3b091d6b386.zip gcc-a8a5f53add9eb69aa49b92622e74e3b091d6b386.tar.gz gcc-a8a5f53add9eb69aa49b92622e74e3b091d6b386.tar.bz2 |
common.opt (fprofile-generate,fprofile-use): Add.
* common.opt (fprofile-generate,fprofile-use): Add.
* gcc.c (LINK_COMMAND_SPEC): Arrange -fprofile-generate to imply -lgcov
* opts.c (profile_arc_flag_set, flag_profile_values_set,
flag_unroll_loops_set, flag_tracer_set,
flag_value_profile_transformations_set,
flag_peel_loops_set): New static variables.
(common_handle_option): Deal with -fprofile-generate/-fprofile-use
* invoke.texi (-fprofile-generate, -fprofile-use): Describe.
From-SVN: r74976
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -148,6 +148,13 @@ static unsigned int columns = 80; /* What to print when a switch has no documentation. */ static const char undocumented_msg[] = N_("This switch lacks documentation"); +/* Used for bookkeeping on whether user set these flags so + -fprofile-use/-fprofile-generate does not use them. */ +static bool profile_arc_flag_set, flag_profile_values_set; +static bool flag_unroll_loops_set, flag_tracer_set; +static bool flag_value_profile_transformations_set; +static bool flag_peel_loops_set, flag_branch_probabilities_set; + /* Input file names. */ const char **in_fnames; unsigned num_in_fnames; @@ -882,6 +889,7 @@ common_handle_option (size_t scode, const char *arg, break; case OPT_fbranch_probabilities: + flag_branch_probabilities_set = true; flag_branch_probabilities = value; break; @@ -1135,6 +1143,7 @@ common_handle_option (size_t scode, const char *arg, break; case OPT_fpeel_loops: + flag_peel_loops_set = true; flag_peel_loops = value; break; @@ -1167,14 +1176,41 @@ common_handle_option (size_t scode, const char *arg, break; case OPT_fprofile_arcs: + profile_arc_flag_set = true; profile_arc_flag = value; break; + case OPT_fprofile_use: + if (!flag_branch_probabilities_set) + flag_branch_probabilities = value; + if (!flag_profile_values_set) + flag_profile_values = value; + if (!flag_unroll_loops_set) + flag_unroll_loops = value; + if (!flag_peel_loops_set) + flag_peel_loops = value; + if (!flag_tracer_set) + flag_tracer = value; + if (!flag_value_profile_transformations_set) + flag_value_profile_transformations = value; + break; + + case OPT_fprofile_generate: + if (!profile_arc_flag_set) + profile_arc_flag = value; + if (!flag_profile_values_set) + flag_profile_values = value; + if (!flag_value_profile_transformations_set) + flag_value_profile_transformations = value; + break; + case OPT_fprofile_values: + flag_profile_values_set = true; flag_profile_values = value; break; case OPT_fvpt: + flag_value_profile_transformations_set = value; flag_value_profile_transformations = value; break; @@ -1358,6 +1394,7 @@ common_handle_option (size_t scode, const char *arg, break; case OPT_ftracer: + flag_tracer_set = true; flag_tracer = value; break; @@ -1378,6 +1415,7 @@ common_handle_option (size_t scode, const char *arg, break; case OPT_funroll_loops: + flag_unroll_loops_set = true; flag_unroll_loops = value; break; |