[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-12-07 Thread rguenth at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



 Status|UNCONFIRMED |RESOLVED

 Resolution||FIXED



--- Comment #31 from Richard Biener rguenth at gcc dot gnu.org 2012-12-07 
12:04:08 UTC ---

Assuming fixed.  I don't see any non-LTO profiledbootstrap fails on

gcc-regression.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-18 Thread tejohnson at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #30 from tejohnson at gcc dot gnu.org 2012-11-19 05:21:06 UTC ---

Author: tejohnson

Date: Mon Nov 19 05:20:59 2012

New Revision: 193612



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=193612

Log:

This patch addresses the bogus Invocation mismatch messages seen in parallel

profiledbootstrap builds of gcc. See PR bootstrap/55051 for a discussion of

why this is occurring and why this checking is inaccurate. Leave it in when

!GCOV_LOCKED, to warn about concurrent update issues requiring locking.



2012-11-18  Teresa Johnson  tejohn...@google.com



PR bootstrap/55051

* libgcov.c (gcov_exit): Remove merged program summary

comparison unless !GCOV_LOCKED.



Modified:

trunk/libgcc/ChangeLog

trunk/libgcc/libgcov.c


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-16 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #27 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-16 
17:42:26 UTC ---

  /* Now merge each file.  */

  for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr-next)

{

// Open existing gcda file for gi_ptr

// Find program summary corresponding to this executable - save in prg

// Merge execution counts for each function

// Merge program summary

//  - If this is the first merged file for this execution,

save merged summary in all_prg

//  - Otherwise if #runs the same in prg and all_prg,

print error message if prg != all_prg.

// Write merged gcda

}



Hmm, yes, it seems wrong.  We can not expect all gcda files to have same number

of runs.  We really need to process sum_all  friends locally for each file. 

Only I suppose we can check if number of runs of the prg happens to match the

last merged file then sum_all should match. That would be nice consistency

check. If the bootstrap works with this change, consider the patch preapproved.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-16 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #28 from Teresa Johnson tejohnson at google dot com 2012-11-16 
18:03:08 UTC ---

On Fri, Nov 16, 2012 at 9:42 AM, hubicka at gcc dot gnu.org

gcc-bugzi...@gcc.gnu.org wrote:



 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #27 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-16 
 17:42:26 UTC ---

   /* Now merge each file.  */

   for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr-next)

 {

 // Open existing gcda file for gi_ptr

 // Find program summary corresponding to this executable - save in 
 prg

 // Merge execution counts for each function

 // Merge program summary

 //  - If this is the first merged file for this execution,

 save merged summary in all_prg

 //  - Otherwise if #runs the same in prg and all_prg,

 print error message if prg != all_prg.

 // Write merged gcda

 }



 Hmm, yes, it seems wrong.  We can not expect all gcda files to have same 
 number

 of runs.  We really need to process sum_all  friends locally for each file.

 Only I suppose we can check if number of runs of the prg happens to match the

 last merged file then sum_all should match.



I'm confused - that is essentially what it is doing today (although

comparing against the first merged file instead of the last merged

file). It isn't expecting all the gcda files to have the same number

of runs, but when they do it expects them to have the same sum_all.

See the trace of updates I show below this pseudo code in the same

email that shows why that is not working.



 That would be nice consistency

 check. If the bootstrap works with this change, consider the patch 
 preapproved.



I had sent a patch last night to simply rip out this check based on

the analysis I had done, but I assume you are not talking about that.



Thanks,

Teresa





 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.







--

Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-16 Thread hubicka at ucw dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #29 from Jan Hubicka hubicka at ucw dot cz 2012-11-16 18:57:41 
UTC ---

 

 I'm confused - that is essentially what it is doing today (although

 comparing against the first merged file instead of the last merged

 file). It isn't expecting all the gcda files to have the same number

 of runs, but when they do it expects them to have the same sum_all.

 See the trace of updates I show below this pseudo code in the same

 email that shows why that is not working.



Hmm, after some tought I guess what can happen is that number of run matches

but these are different run, because more than 2 streamings may be running...



Honza


Re: [Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-15 Thread Jan Hubicka
 Note though that this is not an assert. It just emits a message to
 stderr. Do you think a better error message is appropriate? I'm not
 sure the some data files may have been removed is an accurate
 description of the issue. Perhaps something like Profile data file
 mismatch may indicate corrupt profile data?

Well, we should figure out why sum_all starts to diverge.  If we had
problems mixing cc1 and cc1plus executions, we should get mismatches in
number of counters.  What happens after the miscompare?

Honza


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-15 Thread hubicka at ucw dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #24 from Jan Hubicka hubicka at ucw dot cz 2012-11-15 10:56:53 
UTC ---

 Note though that this is not an assert. It just emits a message to

 stderr. Do you think a better error message is appropriate? I'm not

 sure the some data files may have been removed is an accurate

 description of the issue. Perhaps something like Profile data file

 mismatch may indicate corrupt profile data?



Well, we should figure out why sum_all starts to diverge.  If we had

problems mixing cc1 and cc1plus executions, we should get mismatches in

number of counters.  What happens after the miscompare?



Honza


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-15 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #25 from Teresa Johnson tejohnson at google dot com 2012-11-15 
14:34:10 UTC ---

On Thu, Nov 15, 2012 at 2:56 AM, hubicka at ucw dot cz 

gcc-bugzi...@gcc.gnu.org wrote:





 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #24 from Jan Hubicka hubicka at ucw dot cz 2012-11-15

 10:56:53 UTC ---

  Note though that this is not an assert. It just emits a message to

  stderr. Do you think a better error message is appropriate? I'm not

  sure the some data files may have been removed is an accurate

  description of the issue. Perhaps something like Profile data file

  mismatch may indicate corrupt profile data?



 Well, we should figure out why sum_all starts to diverge.  If we had

 problems mixing cc1 and cc1plus executions, we should get mismatches in

 number of counters.





Right, it doesn't appear to be different executables since the number of

counters is identical. I'll instrument it and see if I can figure out why

they diverge.





 What happens after the miscompare?





A flag is set so that the error is emitted at most once per merge, and then

we continue on with the merge and ignore it. Basically what it is doing is

saving the first merged summary (for the first object file's gcda we merge

into), and then for each additional object file that gets its counters

merged the resulting program summary is compared against the saved program

summary. But only if the number of runs is the same as the saved summary.

This could happen if the gcda files are walked in a different order during

updates (i.e. the gcov_list is in a different order for different processes

of the same executable), but I am not sure if that can happen.



Teresa





 Honza



 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.




[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-15 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #26 from Teresa Johnson tejohnson at google dot com 2012-11-15 
22:42:12 UTC ---

On Thu, Nov 15, 2012 at 6:33 AM, Teresa Johnson tejohn...@google.com wrote:







 On Thu, Nov 15, 2012 at 2:56 AM, hubicka at ucw dot cz

 gcc-bugzi...@gcc.gnu.org wrote:





 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #24 from Jan Hubicka hubicka at ucw dot cz 2012-11-15

 10:56:53 UTC ---

  Note though that this is not an assert. It just emits a message to

  stderr. Do you think a better error message is appropriate? I'm not

  sure the some data files may have been removed is an accurate

  description of the issue. Perhaps something like Profile data file

  mismatch may indicate corrupt profile data?



 Well, we should figure out why sum_all starts to diverge.  If we had

 problems mixing cc1 and cc1plus executions, we should get mismatches in

 number of counters.





 Right, it doesn't appear to be different executables since the number of

 counters is identical. I'll instrument it and see if I can figure out why

 they diverge.





 What happens after the miscompare?





 A flag is set so that the error is emitted at most once per merge, and then

 we continue on with the merge and ignore it. Basically what it is doing is

 saving the first merged summary (for the first object file's gcda we merge

 into), and then for each additional object file that gets its counters

 merged the resulting program summary is compared against the saved program

 summary. But only if the number of runs is the same as the saved summary.

 This could happen if the gcda files are walked in a different order during

 updates (i.e. the gcov_list is in a different order for different processes

 of the same executable), but I am not sure if that can happen.



It appears that this is what is happening, and I think it makes sense

that it can.



We're essentially doing this:



  /* Now merge each file.  */

  for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr-next)

{

// Open existing gcda file for gi_ptr

// Find program summary corresponding to this executable - save in prg

// Merge execution counts for each function

// Merge program summary

//  - If this is the first merged file for this execution,

save merged summary in all_prg

//  - Otherwise if #runs the same in prg and all_prg,

print error message if prg != all_prg.

// Write merged gcda

}



I found that in a couple cases, we printed the error message for

libcpp/directives.gcda, where the saved all_prg summary was from

gcc/gcc.gcda.



I then instrumented the code so that each time we merge into one of

these 2 gcda files I emit the pids, the number of runs, the number of

counters and the merged sum_all. Comparing the results from all the

merges to these two gcda files I see that most of the time the merges

proceed in the same order, but there are a few cases where the order

is different, resulting in a different sum_all with the same number of

runs, and then things go back to normal and the sum_all matches again.

E.g., here is one place where things get out of order briefly,

resulting in one of the error messages being printed:



...

pid 28432 ppid 28429 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/gcc/gcc.gcda with runs 254 num

13193 sum_all 17058327

pid 28437 ppid 28365 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/gcc/gcc.gcda with runs 255 num

13193 sum_all 17064832

pid 28439 ppid 28367 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/gcc/gcc.gcda with runs 256 num

13193 sum_all 17071340

pid 28440 ppid 28436 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/gcc/gcc.gcda with runs 257 num

13193 sum_all 17177525

...



vs



...

pid 28432 ppid 28429 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/directives.gcda with runs

254 num 13193 sum_all 17058327

pid 28439 ppid 28367 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/directives.gcda with runs

255 num 13193 sum_all 17064835

pid 28437 ppid 28365 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/directives.gcda with runs

256 num 13193 sum_all 17071340

pid 28440 ppid 28436 Merging summary for

/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/directives.gcda with runs

257 num 13193 sum_all 17177525

...



Notice the middle two pids are flipped, resulting in the sum_all being

different after run 255, and back to the same after run 256.



I believe this could happen if pids 28437 and 28439 finished

near-simultaneously, waited for the lock for gcc.gcda, and 28437 won

first, but then by some luck of timing they subsequently both

attempted to open directives.gcda at around the same time and 28439

happened to win the lock in the fcntl loop first.



I believe it is also possible for object files to be in different

orders in the 

[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #4 from H.J. Lu hjl.tools at gmail dot com 2012-11-14 15:06:44 
UTC ---

With revision 193500, we got



libdecnumber -I../../src-trunk/gcc/../libdecnumber/bid -I../libdecnumber

-I../../src-trunk/gcc/../libbacktrace../../src-trunk/gcc/gimple-iterator.c

-o gimple-iterator.o

../../src-trunk/gcc/fold-const.c:16732:1: internal compiler error: in

edge_badness, at ipa-inline.c:921

 }

 ^

0x11ddca7 edge_badness

../../src-trunk/gcc/ipa-inline.c:921

0x11ddf41 update_edge_key

../../src-trunk/gcc/ipa-inline.c:987

0x11df257 inline_small_functions

../../src-trunk/gcc/ipa-inline.c:1476

0x11dff6a ipa_inline

../../src-trunk/gcc/ipa-inline.c:1794

Please submit a full bug report,

with preprocessed source if appropriate.

Please include the complete backtrace with any bug report.

See http://gcc.gnu.org/bugs.html for instructions.

make[6]: *** [fold-const.o] Error 1


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #5 from H.J. Lu hjl.tools at gmail dot com 2012-11-14 15:08:53 
UTC ---

There are



  badness = (relative_time_benefit (callee_info, edge, edge_time)

 * (INT_MIN / 16 / RELATIVE_TIME_BENEFIT_RANGE));

  badness /= (growth * MAX (1, callee_info-growth));

  gcc_checking_assert (badness =0  badness = INT_MIN / 16);


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread markus at trippelsdorf dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



Markus Trippelsdorf markus at trippelsdorf dot de changed:



   What|Removed |Added



 CC||markus at trippelsdorf dot

   ||de



--- Comment #6 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-14 15:13:08 UTC ---

(In reply to comment #5)

 There are

 

   badness = (relative_time_benefit (callee_info, edge, edge_time)

  * (INT_MIN / 16 / RELATIVE_TIME_BENEFIT_RANGE));

   badness /= (growth * MAX (1, callee_info-growth));

   gcc_checking_assert (badness =0  badness = INT_MIN / 16);



Yes, badness is 1 in this case...

I'm reducing the issue right now.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at ucw dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #7 from Jan Hubicka hubicka at ucw dot cz 2012-11-14 15:35:26 UTC 
---

 --- Comment #6 from Markus Trippelsdorf markus at trippelsdorf dot de 
 2012-11-14 15:13:08 UTC ---

 (In reply to comment #5)

  There are

  

badness = (relative_time_benefit (callee_info, edge, edge_time)

   * (INT_MIN / 16 / RELATIVE_TIME_BENEFIT_RANGE));

badness /= (growth * MAX (1, callee_info-growth));

gcc_checking_assert (badness =0  badness = INT_MIN / 16);

 

 Yes, badness is 1 in this case...

 I'm reducing the issue right now.



Thanks, I was just about to start looking into FDO inlining re-tunning.



relative_time_benefit should be in range 0...INT_MAX / 64 so it should end up

in multipling -4 times that should be safe.



I am going to try to reproduce it now.

/bin/bash: ./:q: Permission denied


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread markus at trippelsdorf dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #8 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-11-14 20:48:21 UTC ---

Created attachment 28688

  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=28688

testcase



The testcase is only reduced to 97K, but it gets reduced very slowly

and I'm giving up.



 $ g++ -w -c -O2 -fprofile-generate test.ii

...

badness 0

badness 0

badness 1

test.ii:784:42: internal compiler error: in edge_badness, at ipa-inline.c:921


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #9 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-14 
23:03:27 UTC ---

Author: hubicka

Date: Wed Nov 14 23:03:22 2012

New Revision: 193512



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=193512

Log:



PR bootstrap/55051

* ipa-inline.c (edge_badness): Improve dumping; fix overflow.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/ipa-inline.c


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 CC||tejohnson at google dot com

--- Comment #10 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
00:07:12 UTC ---
With make -j24 I also get tons of Invocation mismatch messages Theresa
introduced。 Theresa, can you look into it?


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051

--- Comment #11 from Teresa Johnson tejohnson at google dot com 2012-11-15 
00:21:36 UTC ---
Sure, I will see if I can reproduce it.
Teresa


On Wed, Nov 14, 2012 at 4:07 PM, hubicka at gcc dot gnu.org 
gcc-bugzi...@gcc.gnu.org wrote:


 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051

 Jan Hubicka hubicka at gcc dot gnu.org changed:

What|Removed |Added

 
  CC||tejohnson at google dot
 com

 --- Comment #10 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15
 00:07:12 UTC ---
 With make -j24 I also get tons of Invocation mismatch messages Theresa
 introduced。 Theresa, can you look into it?

 --
 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
 --- You are receiving this mail because: ---
 You are on the CC list for the bug.



[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #12 from H.J. Lu hjl.tools at gmail dot com 2012-11-15 00:30:51 
UTC ---

Revision 193513 gave:



../../src-trunk/gcc/common/common-targhooks.c: In function

'default_target_handle_option(gcc_options*, gcc_options*, cl_decoded_option

const*, unsigned int)':

../../src-trunk/gcc/common/common-targhooks.c:85:4: note: file

/export/gnu/import/git/gcc-test-profile/bld/gcc/common/common-targhooks.gcda

not found, execution counts estimated

   };



In file included from ../../src-trunk/gcc/gcov.c:47:0:

../../src-trunk/gcc/gcov.c: In function 'read_count_file(function_info*)':

../../src-trunk/gcc/gcov-io.c:555:54: error: array subscript is above array

bounds [-Werror=array-bounds]

   cur_bitvector = histo_bitvector[bv_ix++];

  ^

In file included from ../../src-trunk/gcc/gcov-dump.c:30:0:

../../src-trunk/gcc/gcov-io.c:555:54: error: array subscript is above array

bounds [-Werror=array-bounds]

   cur_bitvector = histo_bitvector[bv_ix++];

  ^

cc1plus: all warnings being treated as errors

make[6]: *** [gcov-dump.o] Error 1

make[6]: *** Waiting for unfinished jobs

cc1plus: all warnings being treated as errors

make[6]: *** [gcov.o] Error 1

rm gcj-dbtool.pod jcf-dump.pod jv-convert.pod grmic.pod gc


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #13 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
01:03:09 UTC ---

OK, the false positive is on quite sloppy code in gcov-io.c. I attached

testcase to PR55079 and will fix the gcc_assert specifying the loop bounds to

not allow out-of-bound read.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #14 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
01:07:04 UTC ---

Author: hubicka

Date: Thu Nov 15 01:07:01 2012

New Revision: 193522



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=193522

Log:

PR bootstrap/55051

* gcov-io.c (gcov_read_summary): Fix array bound check.



Modified:

trunk/gcc/ChangeLog

trunk/gcc/gcov-io.c


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #15 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
01:10:29 UTC ---

Note that profiledbootstrap still dies for me on

config.status: creating tests/rand/Makefile

../../libiberty/cp-demangle.c: In function 'd_print_cast.isra.8':

../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

'd_print_cast.isra.8' does not match its profile data (counter 'arcs')

[-Werror=coverage-mismatch]

 }

 ^

../../libiberty/cp-demangle.c:5642:1: note: use -Wno-error=coverage-mismatch to

tolerate the mismatch but performance may drop if the function is hot

../../libiberty/cp-demangle.c: In function 'd_print_function_type.isra.7':

../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

'd_print_function_type.isra.7' does not match its profile data (counter 'arcs')

[-Werror=coverage-mismatch]

../../libiberty/cp-demangle.c:5642:1: note: use -Wno-error=coverage-mismatch to

tolerate the mismatch but performance may drop if the function is hot

../../libiberty/cp-demangle.c: In function 'd_print_array_type.isra.6':

../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

'd_print_array_type.isra.6' does not match its profile data (counter 'arcs')

[-Werror=coverage-mismatch]

../../libiberty/cp-demangle.c:5642:1: note: use -Wno-error=coverage-mismatch to

tolerate the mismatch but performance may drop if the function is hot

../../libiberty/cp-demangle.c: In function 'd_lookup_template_argument.isra.5':

../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

'd_lookup_template_argument.isra.5' does not match its profile data (counter

'arcs') [-Werror=coverage-mismatch]

../../libiberty/cp-demangle.c:5642:1: note: use -Wno-error=coverage-mismatch to

tolerate the mismatch but performance may drop if the function is hot

../../libiberty/cp-demangle.c: In function 'd_number.isra.0':





I am unsure if this is bug in profile code or different configuration of

libberty...


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #16 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
01:17:43 UTC ---

Theresa: I am using gcc10 from compilation farm, but I think it is fairly

universal problem.

Also I think that gcc_assert should not be assert, but an user readable error

about gcov file corruption.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #17 from Teresa Johnson tejohnson at google dot com 2012-11-15 
01:28:47 UTC ---

On Wed, Nov 14, 2012 at 5:17 PM, hubicka at gcc dot gnu.org 

gcc-bugzi...@gcc.gnu.org wrote:





 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #16 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15

 01:17:43 UTC ---

 Theresa: I am using gcc10 from compilation farm, but I think it is fairly

 universal problem.





Ok, I am doing a profiledbootstrap  -j24 with trunk on linux x86_64 to see

if I can reproduce it.





 Also I think that gcc_assert should not be assert, but an user readable

 error

 about gcov file corruption.





Are we talking about the coverage mismatch error, i.e.:



 ../../libiberty/cp-demangle.c: In function 'd_print_cast.isra.8':

../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

'd_print_cast.isra.8' does not match its profile data (counter 'arcs')

[-Werror=coverage-mismatch]

 }

 ^

../../libiberty/cp-demangle.c:5642:1: note: use

-Wno-error=coverage-mismatch to

tolerate the mismatch but performance may drop if the function is hot



I don't think this was introduced by my changes. Or are we talking about a

different error?



Thanks,

Teresa





 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.




[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #18 from Teresa Johnson tejohnson at google dot com 2012-11-15 
01:33:43 UTC ---

On Wed, Nov 14, 2012 at 5:28 PM, Teresa Johnson tejohn...@google.com wrote:









 On Wed, Nov 14, 2012 at 5:17 PM, hubicka at gcc dot gnu.org 
 gcc-bugzi...@gcc.gnu.org wrote:





 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #16 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
 01:17:43 UTC ---

 Theresa: I am using gcc10 from compilation farm, but I think it is fairly

 universal problem.





 Ok, I am doing a profiledbootstrap  -j24 with trunk on linux x86_64 to see if 
 I can reproduce it.





 Also I think that gcc_assert should not be assert, but an user readable error

 about gcov file corruption.





 Are we talking about the coverage mismatch error, i.e.:



  ../../libiberty/cp-demangle.c: In function 'd_print_cast.isra.8':

 ../../libiberty/cp-demangle.c:5642:1: error: the control flow of function

 'd_print_cast.isra.8' does not match its profile data (counter 'arcs')

 [-Werror=coverage-mismatch]

  }

  ^

 ../../libiberty/cp-demangle.c:5642:1: note: use -Wno-error=coverage-mismatch 
 to

 tolerate the mismatch but performance may drop if the function is hot



 I don't think this was introduced by my changes. Or are we talking about a 
 different error?





Oh got it - it is this one, right?:



profiling:/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/files.gcda:Invocation

mismatch - some data files may have been removed



I think this one was there before, but I had to modify it after my

histogram change. I will take a look.



Teresa







 Thanks,

 Teresa





 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.









 --

 Teresa Johnson | Software Engineer |  tejohn...@google.com |  408-460-2413









--

Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413


Re: [Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread Jan Hubicka
 Oh got it - it is this one, right?:
 
 profiling:/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/files.gcda:Invocation
 mismatch - some data files may have been removed

Yes, it is this one.
 
 I think this one was there before, but I had to modify it after my
 histogram change. I will take a look.

Also could you please make a patch to make maybe_hot_count_p to use
hitogram driven cutoff? Otherwise the histograms would be completely
unused for 4.8 and it would be stupid to carry all the extra data
for no use.  I would like this to be done soon, since I plan to base
some of inliner re-tunning to be based on this.

The mismatch is independent problem, yes.

Honza


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at ucw dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #19 from Jan Hubicka hubicka at ucw dot cz 2012-11-15 01:42:55 
UTC ---

 Oh got it - it is this one, right?:

 

 profiling:/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/files.gcda:Invocation

 mismatch - some data files may have been removed



Yes, it is this one.

 

 I think this one was there before, but I had to modify it after my

 histogram change. I will take a look.



Also could you please make a patch to make maybe_hot_count_p to use

hitogram driven cutoff? Otherwise the histograms would be completely

unused for 4.8 and it would be stupid to carry all the extra data

for no use.  I would like this to be done soon, since I plan to base

some of inliner re-tunning to be based on this.



The mismatch is independent problem, yes.



Honza


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #20 from Teresa Johnson tejohnson at google dot com 2012-11-15 
01:52:45 UTC ---

On Wed, Nov 14, 2012 at 5:42 PM, hubicka at ucw dot cz

gcc-bugzi...@gcc.gnu.org wrote:



 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #19 from Jan Hubicka hubicka at ucw dot cz 2012-11-15 01:42:55 
 UTC ---

 Oh got it - it is this one, right?:



 profiling:/home/tejohnson/extra/gcc_trunk_3_obj/libcpp/files.gcda:Invocation

 mismatch - some data files may have been removed



 Yes, it is this one.



 I think this one was there before, but I had to modify it after my

 histogram change. I will take a look.



 Also could you please make a patch to make maybe_hot_count_p to use

 hitogram driven cutoff? Otherwise the histograms would be completely

 unused for 4.8 and it would be stupid to carry all the extra data

 for no use.  I would like this to be done soon, since I plan to base

 some of inliner re-tunning to be based on this.



Ok, I can do that. I had tried that but didn't see any gain yet (need

to take a look at my results again). I have been playing with teasing

apart the various uses of this cutoff (inlining vs instruction

selection vs etc) too, but can do that in a later release once the

appropriate individual cutoffs are tuned. I also have a loop unroller

patch on the google branch that uses this that needs to be ported to

trunk. It was in the original working set patch I sent for review,

that ended up being split out and revised heavily. Shall I resubmit

this part for 4.8 or is it too late?



Thanks,

Teresa





 The mismatch is independent problem, yes.



 Honza



 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.







--

Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread hubicka at ucw dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #21 from Jan Hubicka hubicka at ucw dot cz 2012-11-15 02:01:01 
UTC ---

 Ok, I can do that. I had tried that but didn't see any gain yet (need

 to take a look at my results again). I have been playing with teasing

 apart the various uses of this cutoff (inlining vs instruction

 selection vs etc) too, but can do that in a later release once the

 appropriate individual cutoffs are tuned. I also have a loop unroller

 patch on the google branch that uses this that needs to be ported to

 trunk. It was in the original working set patch I sent for review,

 that ended up being split out and revised heavily. Shall I resubmit

 this part for 4.8 or is it too late?



I can't review the unroller change, so you should ask one of the maintainers

of the area.  For the hot/cold change, I would really like to see it in.

(and yes, I also plan to use it for more aggressive inlining in known to

be hot areas).



Honza


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #22 from Teresa Johnson tejohnson at google dot com 2012-11-15 
02:46:20 UTC ---

Ok, will see if I can submit that one tomorrow then, after double

checking the performance.



Teresa



On Wed, Nov 14, 2012 at 6:01 PM, hubicka at ucw dot cz

gcc-bugzi...@gcc.gnu.org wrote:



 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #21 from Jan Hubicka hubicka at ucw dot cz 2012-11-15 02:01:01 
 UTC ---

 Ok, I can do that. I had tried that but didn't see any gain yet (need

 to take a look at my results again). I have been playing with teasing

 apart the various uses of this cutoff (inlining vs instruction

 selection vs etc) too, but can do that in a later release once the

 appropriate individual cutoffs are tuned. I also have a loop unroller

 patch on the google branch that uses this that needs to be ported to

 trunk. It was in the original working set patch I sent for review,

 that ended up being split out and revised heavily. Shall I resubmit

 this part for 4.8 or is it too late?



 I can't review the unroller change, so you should ask one of the maintainers

 of the area.  For the hot/cold change, I would really like to see it in.

 (and yes, I also plan to use it for more aggressive inlining in known to

 be hot areas).



 Honza



 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-11-14 Thread tejohnson at google dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #23 from Teresa Johnson tejohnson at google dot com 2012-11-15 
06:44:00 UTC ---

On Wed, Nov 14, 2012 at 5:17 PM, hubicka at gcc dot gnu.org

gcc-bugzi...@gcc.gnu.org wrote:



 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



 --- Comment #16 from Jan Hubicka hubicka at gcc dot gnu.org 2012-11-15 
 01:17:43 UTC ---

 Theresa: I am using gcc10 from compilation farm, but I think it is fairly

 universal problem.

 Also I think that gcc_assert should not be assert, but an user readable error

 about gcov file corruption.



I took a look at this some more this evening, printing out the values

being compared. Note that the modification I made to this code was to

ignore the histogram when comparing the gcov_ctr_summary, since the

order of update can affect the merged histogram values as they are

prorated. So essentially we are doing the same comparison here that we

did before the histogram was added.



I found that the gcov_ctr_summary fields being compared are identical

except for the sum_all, which is different, leading to the error

message. The number of counters, run_max and sum_max are the same. I'm

not sure how that can happen given that locking is on and the sum_all

should be the same regardless of the merging order.



Note though that this is not an assert. It just emits a message to

stderr. Do you think a better error message is appropriate? I'm not

sure the some data files may have been removed is an accurate

description of the issue. Perhaps something like Profile data file

mismatch may indicate corrupt profile data?



Teresa





 --

 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email

 --- You are receiving this mail because: ---

 You are on the CC list for the bug.







--

Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-10-25 Thread ubizjak at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2012-10-25 06:51:45 
UTC ---

(In reply to comment #2)

 LRA generates



This comment belongs to PR55049 (copied there).


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-10-24 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



   Target Milestone|--- |4.8.0


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-10-24 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



H.J. Lu hjl.tools at gmail dot com changed:



   What|Removed |Added



 CC||hubicka at gcc dot gnu.org



--- Comment #1 from H.J. Lu hjl.tools at gmail dot com 2012-10-24 23:49:48 
UTC ---

It is caused by revision 192538:



http://gcc.gnu.org/ml/gcc-cvs/2012-10/msg00661.html


[Bug bootstrap/55051] [4.8 Regression] profiledbootstrap failed

2012-10-24 Thread hjl.tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051



--- Comment #2 from H.J. Lu hjl.tools at gmail dot com 2012-10-25 00:49:09 
UTC ---

LRA generates



(gdb) call debug_rtx (insn)

(insn 6 20 7 2 (set (reg/f:SI 0 ax [orig:65 gomp_tls_data.ts.work_share ] [65])

(mem/f/j/c:SI (plus:SI (reg:SI 2 cx [68])

(reg:DI 0 ax [64])) [0 gomp_tls_data.ts.work_share+0 S4 A32]))

/tmp/x.i:23 65 {*movsi_internal}

 (expr_list:REG_DEAD (reg:SI 2 cx [68])

(expr_list:REG_DEAD (reg:DI 0 ax [64])

(nil





from



(insn 6 5 7 2 (set (reg/f:SI 65 [ gomp_tls_data.ts.work_share ])

(mem/f/j/c:SI (plus:DI (plus:DI (zero_extend:DI (unspec:SI [

(const_int 0 [0])

] UNSPEC_TP))

(reg:DI 64))

(const_int 4 [0x4])) [0 gomp_tls_data.ts.work_share+0 S4 A32])) 

/tmp/x.i:23 65 {*movsi_internal}

 (expr_list:REG_DEAD (reg:DI 64)

(nil)))



It fails to properly handle zero_extend.