Improve pointer hash function to include all bits

The hashtab pointer hash function is not very good. It throws most of the
bits in the pointer away.

This changes pointer_hash to use the mix code from jhash function that mixes
all the bits on the pointer and makes them dependent on each other, before doing
the modulo.

libiberty/:

2013-04-22  Andi Kleen <ak@linux.intel.com>

	* hashtab.c (hash_pointer): Move to end of file and reimplement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198171 138bc75d-0d04-0410-961f-82ee72b054a4
Add -flto-report-wpa

-flto-report is useful, but it prints for every LTRANS pass and
is very noisy and the main problem is often in WPA only.

Add a new -flto-report-wpa option that is only printed for WPA.

gcc/:

2013-04-22  Andi Kleen  <ak@linux.intel.com>

	* common.opt (-flto-report-wpa): Add.
	* doc/invoke.texi (-flto-report-wpa): Add.
	* lto/lto.c (do_whole_program_analysis): Check for lto-report-wpa.
	(lto_main): dito.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198172 138bc75d-0d04-0410-961f-82ee72b054a4
Print lto report at the right place

The LTO report is currently printed when the type merging hash tables
are already destroyed, which makes them always show up as empty.
Print it earlier. Right now it's printed twice.

gcc/:

2013-04-22  Andi Kleen  <ak@linux.intel.com>

	* lto/lto.c (print_lto_report_1): Declare early.
	(read_cgraph_and_symbols): Call print_lto_report_1 early.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198173 138bc75d-0d04-0410-961f-82ee72b054a4
Fix lto report names

Some of the hash tables in lto-report are misnamed in the report.
Fix this up.

gcc/:

2013-04-22  Andi Kleen  <ak@linux.intel.com>

	* lto/lto.c (print_lto_report_1): Fix LTO report names.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198174 138bc75d-0d04-0410-961f-82ee72b054a4