Fix profile corruption with -O1 (PR gcov-profile/79259)
authorMartin Liska <mliska@suse.cz>
Mon, 30 Jan 2017 15:35:57 +0000 (16:35 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 30 Jan 2017 15:35:57 +0000 (15:35 +0000)
2017-01-30  Martin Liska  <mliska@suse.cz>

PR gcov-profile/79259
* opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
-fprofile-generate.
2017-01-30  Martin Liska  <mliska@suse.cz>

PR gcov-profile/79259
* g++.dg/tree-prof/pr79259.C: New test.

From-SVN: r245031

gcc/ChangeLog
gcc/opts.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-prof/pr79259.C [new file with mode: 0644]

index 620c4b09ebaa6667a201a64736a11ffc18ab9307..206b8a59c4108c8dc67ce41844021644ae4cf15b 100644 (file)
@@ -1,3 +1,9 @@
+2017-01-30  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/79259
+       * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
+       -fprofile-generate.
+
 2017-01-30  Martin Liska  <mliska@suse.cz>
 
        PR bootstrap/78985
index 5f573a16ff156a81e6b850b93d807aa59c280970..b38e9b4f3a7d6d4d52628e07e8ee4e7ad9e3d3ac 100644 (file)
@@ -2150,6 +2150,8 @@ common_handle_option (struct gcc_options *opts,
        opts->x_flag_profile_values = value;
       if (!opts_set->x_flag_inline_functions)
        opts->x_flag_inline_functions = value;
+      if (!opts_set->x_flag_ipa_bit_cp)
+       opts->x_flag_ipa_bit_cp = value;
       /* FIXME: Instrumentation we insert makes ipa-reference bitmaps
         quadratic.  Disable the pass until better memory representation
         is done.  */
index 33f02489e4ec5aeb072006cac787f26615153c97..cbab69fd1b12aee0e99057008b41835fb5c498f7 100644 (file)
@@ -1,3 +1,8 @@
+2017-01-30  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/79259
+       * g++.dg/tree-prof/pr79259.C: New test.
+
 2017-01-30  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/79276
diff --git a/gcc/testsuite/g++.dg/tree-prof/pr79259.C b/gcc/testsuite/g++.dg/tree-prof/pr79259.C
new file mode 100644 (file)
index 0000000..a55172b
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-options "-O1" } */
+
+inline bool
+a (int b)
+{
+  return (b & 5) != b;
+}
+int c;
+int
+fn2 ()
+{
+  if (a (c == 0))
+    return 0;
+}
+
+int main()
+{
+  fn2();
+}
+