IPA ICF: compare_operand is split to multiple functions.

gcc/ChangeLog:

2014-12-12  Martin Liska  <mliska@suse.cz>

	PR ipa/63569
	* gimple-walk.h (get_base_loadstore): Declare a new global
	function.
	* gimple-walk.c (get_base_loadstore): Define a new global
	function.
	* ipa-icf-gimple.c (func_checker::compare_ssa_name): Enhance SSA
	name comparison.
	(func_checker::compare_memory_operand): New function.
	(func_checker::compare_operand): Split case to newly
	added functions.
	(func_checker::compare_cst_or_decl): New function.
	(func_checker::compare_gimple_call): Identify
	memory operands.
	(func_checker::compare_gimple_assign): Likewise.
	* ipa-icf-gimple.h: New function.
Fix for PR ipa/63569.

gcc/testsuite/ChangeLog:

2014-12-16  Martin Liska  <mliska@suse.cz>

	* gcc.dg/ipa/pr63569.c: New test.

gcc/ChangeLog:

2014-12-16  Martin Liska  <mliska@suse.cz>

	* ipa-icf-gimple.c (func_checker::compare_memory_operand):
	Validate volatile flag.