PR rtl-optimization/94605
* early-remat.c (early_remat::process_block): Handle insns that
set multiple candidate registers.
+2020-04-16 Jan Hubicka <hubicka@ucw.cz>
+
+ PR gcov-profile/93401
+ * common.opt (profile-prefix-path): New option.
+ * coverae.c: Include diagnostics.h.
+ (coverage_init): Strip profile prefix path.
+ * doc/invoke.texi (-fprofile-prefix-path): Document.
2020-04-16 Richard Biener <rguenther@suse.de>
EnumValue
Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
+fprofile-prefix-path=
+Common Joined RejectNegative Var(profile_prefix_path)
+Remove prefix from absolute path before manging name for -fprofile-generate= and -fprofile-use=.
+
fprofile-generate
Common
Enable common options for generating profile info for profile feedback directed optimizations.
#include "intl.h"
#include "auto-profile.h"
#include "profile.h"
+#include "diagnostic.h"
#include "gcov-io.c"
const char *separator = "/";
#endif
filename = concat (getpwd (), separator, filename, NULL);
+ if (profile_prefix_path)
+ {
+ if (!strncmp (filename, profile_prefix_path,
+ strlen (profile_prefix_path)))
+ {
+ filename += strlen (profile_prefix_path);
+ while (*filename == *separator)
+ filename++;
+ }
+ else
+ warning (0, "filename %qs does not start with profile "
+ "prefix %qs", filename, profile_prefix_path);
+ }
filename = mangle_path (filename);
len = strlen (filename);
}
@gccoptlist{-p -pg -fprofile-arcs --coverage -ftest-coverage @gol
-fprofile-abs-path @gol
-fprofile-dir=@var{path} -fprofile-generate -fprofile-generate=@var{path} @gol
--fprofile-note=@var{path} -fprofile-update=@var{method} @gol
--fprofile-filter-files=@var{regex} -fprofile-exclude-files=@var{regex} -fprofile-reproducibility @gol
+-fprofile-note=@var{path} -fprofile-prefix-path=@var{path} @gol
+-fprofile-update=@var{method} -fprofile-filter-files=@var{regex} @gol
+-fprofile-exclude-files=@var{regex} -fprofile-reproducibility @gol
-fsanitize=@var{style} -fsanitize-recover -fsanitize-recover=@var{style} @gol
-fasan-shadow-offset=@var{number} -fsanitize-sections=@var{s1},@var{s2},... @gol
-fsanitize-undefined-trap-on-error -fbounds-check @gol
location. If you combine the option with multiple source files,
the @file{.gcno} file will be overwritten.
+@item -fprofile-prefix-path=@var{path}
+
+This option can be used in combination with
+@option{profile-generate=}@var{profile_dir} and
+@option{profile-use=}@var{profile_dir} to inform GCC where is the base
+directory of built source tree. By default @var{profile_dir} will contain
+files with mangled absolute paths of all object files in the built project.
+This is not desirable when directory used to build the instrumented binary
+differs from the directory used to build the binary optimized with profile
+feedback because the profile data will not be found during the optimized build.
+In such setups @option{-fprofile-prefix-path=}@var{path} with @var{path}
+pointing to the base directory of the build can be used to strip the irrelevant
+part of the path and keep all file names relative to the main build directory.
+
@item -fprofile-update=@var{method}
@opindex fprofile-update