Commit Graph

120183 Commits

Author SHA1 Message Date
Torvald Riegel
64fbcc74a3 Add HTM fastpath and use Intel RTM for it on x86.
* beginend.cc (htm_fastpath): New.
	(gtm_thread::begin_transaction, _ITM_commitTransaction,
	_ITM_commitTransactionEH): Add HTM fastpath handling.
	* config/linux/rwlock.h (gtm_rwlock.is_write_locked): New.
	* config/posix/rwlock.h (gtm_rwlock.is_write_locked): New.
	* config/x86/target.h (htm_available, htm_init, htm_begin_success,
	htm_begin, htm_commit, htm_abort, htm_abort_should_retry): New.
	* configure.tgt: Add -mrtm to XCFLAGS.
	* method-serial.cc (htm_mg, o_htm_mg, htm_dispatch, dispatch_htm): New.
	(gtm_thread::serialirr_mode): Add HTM fastpath handling.
	* libitm_i.h (htm_fastpath, dispatch_htm): Declare.
	* retry.cc (parse_default_method): Add HTM method parsing.
	(gtm_thread::number_of_threads_changed): Use HTM by default if
	available.

From-SVN: r193369
2012-11-09 17:04:40 +00:00
Jason Merrill
2a28e76a78 re PR c++/54859 (constexpr in template alias rejected as non-constant)
PR c++/54859
	* pt.c (check_instantiated_arg): Don't complain about dependent args.

From-SVN: r193368
2012-11-09 11:14:48 -05:00
Jason Merrill
7dbb85a793 Add C++ attribute abi_tag and -Wabi-tag option.
gcc/
	* attribs.c (lookup_attribute_spec): Handle getting a TREE_LIST.
gcc/c-family/
	* c.opt (Wabi-tag): New.
gcc/cp/
	* tree.c (cxx_attribute_table): Add abi_tag attribute.
	(check_abi_tag_redeclaration, handle_abi_tag_attribute): New.
	* class.c (find_abi_tags_r, check_abi_tags): New.
	(check_bases, check_field_decl): Call check_abi_tags.
	* decl.c (redeclaration_error_message): Call
	check_abi_tag_redeclaration.
	* mangle.c (tree_string_cmp, write_abi_tags): New.
	(write_unqualified_name): Call write_abi_tags.
include/
	* demangle.h (enum demangle_component_type): Add
	DEMANGLE_COMPONENT_TAGGED_NAME.
libiberty/
	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_TAGGED_NAME.
	(d_make_comp, d_find_pack, d_print_comp): Likewise.
	(d_abi_tags): New.
	(d_name): Call it.

From-SVN: r193367
2012-11-09 11:14:37 -05:00
Jason Merrill
52dccf7ac9 remove redundant definition of IN_CHARGE_NAME
From-SVN: r193366
2012-11-09 11:14:25 -05:00
Vladimir Makarov
821b75770b re PR rtl-optimization/55154 (ICE: in curr_insn_transform, at lra-constraints.c:2702 with custom flags)
2012-11-09  Vladimir Makarov  <vmakarov@redhat.com>

	PR tree-optimization/55154
	* lra-int.h (LRA_LOSER_COST_FACTOR, LRA_MAX_REJECT): New macros.
	* lra.c (setup_operand_alternative): Use them.
	* lra-constraints.c (LOSER_COST_FACTOR, MAX_OVERALL_COST_BOUND):
	Remove.
	(process_alt_operands): Use LRA_LOSER_COST_FACTOR and
	LRA_MAX_REJECT.  Accumulate reject instead of setting for
	non-const.
	(curr_insn_transform): Initialize best_losers and best_overall by
	INT_MAX.

2012-11-09  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55154
	* gcc.target/i386/pr55154.c: New test.

From-SVN: r193364
2012-11-09 15:33:19 +00:00
Andi Kleen
ad7bac3130 Handle target specific memory models in C frontend
get_atomic_generic_size would error out for
__atomic_store(...,__ATOMIC_HLE_RELEASE)

Just mask it out. All the memory orders are checked completely
in builtins.c anyways.

I'm not sure what that check is for, it could be removed in theory.

Passed bootstrap and test suite on x86-64

gcc/c-family/:
2012-11-09  Andi Kleen  <ak@linux.intel.com>

	PR 55139
	* c-common.c (get_atomic_generic_size): Mask with
        MEMMODEL_MASK

From-SVN: r193363
2012-11-09 15:24:25 +00:00
Christian Bruel
962e3ae2aa sh.c (sh_can_use_simple_return_p): Enable with -freorder-blocks-and-partition.
* config/sh/sh.c (sh_can_use_simple_return_p): Enable with
        -freorder-blocks-and-partition.

From-SVN: r193362
2012-11-09 15:32:55 +01:00
Vladimir Makarov
4c3ee1f918 re PR rtl-optimization/55151 (ICE: in assign_by_spills, at lra-assigns.c:1217 with -fPIC)
2012-11-09  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55151
	* gcc.dg/pr55151.c: Move ...
	* gcc.target/i386/pr55151.c: ... here.

From-SVN: r193361
2012-11-09 14:28:40 +00:00
Kenneth Zadeck
33ffb5c5ab rtl.h (CONST_SCALAR_INT_P): New macro.
2012-11-09  Kenneth Zadeck <zadeck@naturalbridge.com>

	* rtl.h (CONST_SCALAR_INT_P): New macro.
   	* cfgexpand.c (expand_debug_locations): Changed to use
	CONST_SCALAR_INT_P macro.
	* combine.c (try_combine, subst, make_extraction,
	gen_lowpart_for_combine): Ditto.
	* cselib.c (entry_and_rtx_equal_p, rtx_equal_for_cselib_1): Ditto.
	* dwarf2out.c (loc_descriptor): Ditto.
	* emit-rtl.c (gen_lowpart_common): Ditto.
	* ira-costs.c (record_reg_classes, record_address_regs): Ditto.
	* ira-lives.c (single_reg_class): Ditto.
	* recog.c (simplify_while_replacing, asm_operand_ok,
	constrain_operands): Ditto.
	* reload.c (find_reloads): Ditto.
	* simplify-rtx.c (simplify_unary_operation_1,
	simplify_const_unary_operation, simplify_binary_operation_1,
	simplify_const_binary_operation, simplify_relational_operation_1,
	simplify_subreg): Ditto.

From-SVN: r193360
2012-11-09 13:18:49 +00:00
Steven Bosscher
3a15c2cf68 re PR middle-end/54385 (ICE in pre_and_rev_post_order_compute, at cfganal.c:873)
PR middle-end/54385
	* postreload.c (reload_cse_simplify): Return a bool indicating
	whether the CFG was changed.
	(reload_cse_regs_1): Traverse the CFG instead of the insns chain.
	Cleanup the CFG if edges may have been removed.
	(reload_cse_regs): Update.

From-SVN: r193359
2012-11-09 12:31:32 +00:00
Andrey Belevantsev
50919d13a3 re PR rtl-optimization/54472 (ICE (spill_failure): unable to find a register to spill in class 'AREG' with -O -fschedule-insns -fselective-scheduling)
PR rtl-optimization/54472

	* sel-sched-ir.c (has_dependence_note_reg_set): Handle implicit sets.
	(has_dependence_note_reg_clobber,
	has_dependence_note_reg_use): Likewise.
    
	* gcc.dg/pr54472.c: New test.

From-SVN: r193358
2012-11-09 16:28:21 +04:00
Eric Botcazou
4e568a151c trans.c (gnat_to_gnu): Deal with a missing library unit instead of calling gnat_to_gnu on Emtpy.
* gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Body_Stub>: Deal
	with a missing library unit instead of calling gnat_to_gnu on Emtpy.
	Remove last bits of support for SCIL nodes.  Add cases for nodes that
	should only be present when annotating types.  Add default abort.

From-SVN: r193357
2012-11-09 11:07:30 +00:00
Eric Botcazou
4993465992 i386.c (release_scratch_register_on_entry): Also adjust sp_offset manually.
* config/i386/i386.c (release_scratch_register_on_entry): Also adjust
	sp_offset manually.

From-SVN: r193352
2012-11-09 09:10:04 +00:00
Christian Bruel
55fcb9015c tree-ssa-tail-merge.c (replace_block_by): Update bb2 profile count.
2012-11-08  Christian Bruel  <christian.bruel@st.com>

	* tree-ssa-tail-merge.c (replace_block_by): Update bb2 profile count.
	Do not reset dead bb1->frequency.

From-SVN: r193350
2012-11-09 07:32:28 +01:00
GCC Administrator
c24efbcadb Daily bump.
From-SVN: r193348
2012-11-09 00:18:20 +00:00
Ian Lance Taylor
05f0245f1e go-test.exp (go-gc-tests): Handle runoutput test type with arguments.
* go.test/go-test.exp (go-gc-tests): Handle runoutput test type
	with arguments.  Handle errorcheckoutput and rundir test types.

From-SVN: r193344
2012-11-09 00:05:05 +00:00
Steven Bosscher
d7bd989c6d re PR tree-optimization/55191 (ICE in compute_antic at tree-ssa-pre.c:2511)
gcc/
	PR tree-optimization/55191
	* cfganal.c (connect_infinite_loops_to_exit): Call dfs_deadend here.
	(flow_dfs_compute_reverse_execute): Don't call it here.

testsuite/
	PR tree-optimization/55191
	* gcc.dg/pr55191.c: New test.

From-SVN: r193341
2012-11-08 21:47:50 +00:00
Jakub Jelinek
2a86dbb79b re PR debug/53145 (gcc.dg/pch/save-temps-1.c)
PR debug/53145
	* dwarf2out.c (gen_compile_unit_die): Don't call gen_producer_string
	here, instead add "" if producer_string is NULL.
	(dwarf2out_finish): Call gen_producer_string here, unconditionally
	decrease refcount of the old indirect string and set val_str to
	find_AT_string result.

From-SVN: r193340
2012-11-08 21:20:10 +01:00
François Dumont
ecf07a67d0 re PR libstdc++/54075 ([4.7.1] unordered_map insert still slower than 4.6.2)
2012-11-08  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/54075
	* include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash
	policy state if no rehash.
	* testsuite/23_containers/unordered_set/modifiers/reserve.cc
	(test02): New.

From-SVN: r193339
2012-11-08 20:16:04 +00:00
Jakub Jelinek
68a5598093 re PR debug/54499 (GCC produces wrong debugging information, failure while assembling generated .s file)
PR debug/54499
	* cgraphunit.c (assemble_thunk): Don't call source_line debug hook
	here, instead call insn_locations_{init,finalize} and initialize
	prologue_location.

	* g++.dg/debug/pr54499.C: New test.

From-SVN: r193338
2012-11-08 21:15:06 +01:00
Dmitry Gorbachev
3ad2d621f5 re PR driver/54789 (Error in GCC driver when defining GCC_COMPARE_DEBUG)
PR driver/54789
	* gcc.c (process_command): Use save_switch for synthesized
	-fcompare-debug=* option; mark the switch as known.

From-SVN: r193337
2012-11-08 21:13:13 +01:00
Jakub Jelinek
1f242a0206 re PR target/54308 (build regression in 190498 on ppc64/linux: legitimate_indirect_address_p undefined)
PR target/54308
	* config/rs6000/rs6000.c (legitimate_indirect_address_p): Remove
	inline keyword.

From-SVN: r193336
2012-11-08 21:09:14 +01:00
Bernd Schmidt
28d1688dd1 re PR rtl-optimization/54850 (FAIL: gcc.c-torture/execute/20041113-1.c execution, -Os)
PR rtl-optimization/54850
	* sched-deps.c (find_inc): Add all dependencies from the inc_insn
	to the mem_insn.

From-SVN: r193332
2012-11-08 17:10:26 +00:00
Jan Hubicka
42f7b0fa26 re PR fortran/48636 (Enable more inlining with -O2 and higher)
PR middle-end/48636
	* ipa-inline.c (big_speedup_p): New function.
	(want_inline_small_function_p): Use it.
	(edge_badness): Dump it.
	* params.def (inline-min-speedup): New parameter.
	* doc/invoke.texi (inline-min-speedup): Document.

From-SVN: r193331
2012-11-08 16:46:18 +00:00
Martin Jambor
774b8a558c ipa-prop.c (determine_known_aggregate_parts): Skip writes to different declarations when tracking writes to a declaration.
2012-11-08  Martin Jambor  <mjambor@suse.cz>

	* ipa-prop.c (determine_known_aggregate_parts): Skip writes to
	different declarations when tracking writes to a declaration.

	* gfortran.dg/ipcp-array-1.f90: New test.

From-SVN: r193330
2012-11-08 17:41:06 +01:00
Tobias Schlüter
d476655d1d re PR fortran/51727 (Changing module files)
PR fortran/51727
* module.c (sorted_pointer_info): New.
(gfc_get_sorted_pointer_info): New.
(free_sorted_pointer_info_tree): New.
(compare_sorted_pointer_info): New.
(find_symbols_to_write): New.
(write_symbol1_recursion): New.
(write_symbol1): Collect symbols that need writing, output in order.
(write_generic): Traverse tree in order.

From-SVN: r193329
2012-11-08 16:46:07 +01:00
Paolo Carlini
271a8a1651 55028-debug.cc: Don't pass -D_GLIBCXX_DEBUG by hand (check-debug does).
2012-11-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc:
	Don't pass -D_GLIBCXX_DEBUG by hand (check-debug does).

From-SVN: r193327
2012-11-08 13:40:53 +00:00
Florian Weimer
6aaa880639 cxa_vec.C: Fix typo in comment.
* g++.old-deja/g++.abi/cxa_vec.C: Fix typo in comment.

	* testsuite/18_support/cxa_vec.cc: Fix typo in comment.

From-SVN: r193326
2012-11-08 10:54:04 +01:00
Jonathan Wakely
800ac749de iterator_tracker.h (operator++): Fix returning dangling reference.
* include/profile/iterator_tracker.h (operator++): Fix returning
	dangling reference.
	(operator--): Likewise.

From-SVN: r193323
2012-11-08 09:15:43 +00:00
David S. Miller
cd933185e8 Add extensive commentary to sparc's "U" constraint.
* config/sparc/constraints.md ("U"): Document, in detail,
	which this constraint is necessary.

From-SVN: r193322
2012-11-07 19:26:49 -08:00
GCC Administrator
6dfd4c5089 Daily bump.
From-SVN: r193321
2012-11-08 00:17:51 +00:00
Jack Howarth
e9f958c283 Use -Wl,-undefined,dynamic_lookup on darwin
* testsuite/libgomp.c++/pr24455.C: Use
	-Wl,-undefined,dynamic_lookup on darwin.

From-SVN: r193318
2012-11-07 15:12:27 -08:00
Vladimir Makarov
13021d264c re PR rtl-optimization/55151 (ICE: in assign_by_spills, at lra-assigns.c:1217 with -fPIC)
2012-11-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55151
	* gcc.dg/pr55151.c: Use ia32 instead of x86_64.

From-SVN: r193317
2012-11-07 22:43:30 +00:00
Uros Bizjak
2458853f86 cunroll-1.c: Scan cunrolli dump.
* gcc.dg/tree-ssa/cunroll-1.c: Scan cunrolli dump.

From-SVN: r193316
2012-11-07 23:41:39 +01:00
Uros Bizjak
1939f02be1 re PR middle-end/55235 (FAIL: gcc.target/i386/pr44948-2a.c)
PR middle-end/55235
	* expr.c (store_expr): Do not call emit_block_move for
	non-BLKmode values.

From-SVN: r193314
2012-11-07 23:34:48 +01:00
Eric Botcazou
dd64a6f7c8 re PR middle-end/55219 (memory explosion on nested conditional expressions)
PR middle-end/55219
	* fold-const.c (fold_binary_op_with_conditional_arg): Do not fold if
	the argument is itself a conditional expression.

From-SVN: r193312
2012-11-07 22:26:02 +00:00
Vladimir Makarov
05bb5b0630 re PR rtl-optimization/55151 (ICE: in assign_by_spills, at lra-assigns.c:1217 with -fPIC)
2012-11-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55151
	* gcc.dg/pr55151.c: Compile it only for x86_64.

From-SVN: r193311
2012-11-07 22:20:15 +00:00
Vladimir Makarov
350c0fe7ea re PR rtl-optimization/55122 (ICE: maximum number of LRA constraint passes is achieved (15))
2012-11-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55122
	* lra-constraints.c (match_reload): Sync values for dead input
	pseudos.

2012-11-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/55122
	* gcc.dg/pr55122.c: New test.

From-SVN: r193310
2012-11-07 22:11:08 +00:00
David Edelsohn
49f20f70ef pr46728-[1234578].c: Tighten regex to ignore word powerpc.
* gcc.target/powerpc/pr46728-[1234578].c: Tighten regex to ignore
        word powerpc.
        * gcc.target/powerpc/vsx-mass-1.c: Escape [ and ] in regex.
        * gcc.target/powerpc/loop_align.c: Skip on AIX.
        * gcc.target/powerpc/ppc-pow.c: Allow dot symbols in branch.
        * gcc.target/powerpc/tfmode_off.c: Skip on AIX.

From-SVN: r193309
2012-11-07 16:03:08 -05:00
Richard Henderson
43c5fa7ae0 * trans-mem.c (pass_ipa_tm): Don't use TODO_update_ssa.
From-SVN: r193308
2012-11-07 12:20:32 -08:00
Peter Bergner
428bffcbcd invoke.texi (-mcpu=power8): Document.
* doc/invoke.texi (-mcpu=power8): Document.
	* config.in (HAVE_AS_POWER8): New.
	* config.gcc: Add cpu_type power8.
	* configure.ac: (HAVE_AS_POWER8): Check for assembler support for
	the POWER8 instructions.
	* configure: Regenerate.
	* config/rs6000/rs6000.h: (ASM_CPU_POWER8_SPEC): Define.
	(ASM_CPU_SPEC): Pass %(asm_cpu_power8) for -mcpu=power8.
	(EXTRA_SPECS): Add asm_cpu_power8 spec string.
	* config/rs6000/rs6000-cpus.def (processor_target_table): Alias
	POWER8 to POWER7.
	* config/rs6000/rs6000-tables.opt: Regenerate.
	* config/rs6000/driver-rs6000.c (ASM_CPU_SPEC): For -mcpu=power8,
	pass %(asm_cpu_power8)/-mpwr8.
	* config/rs6000/aix53.h: Likewise.
	* config/rs6000/aix61.h: Likewise.

From-SVN: r193307
2012-11-07 13:49:51 -06:00
Uros Bizjak
ca78ecf41b re PR target/55224 (FAIL: gcc.target/i386/tailcall-1.c scan-assembler jmp)
PR target/55224
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception
	to make a sibcall if one of the functions has void return type.

From-SVN: r193306
2012-11-07 20:35:25 +01:00
Uros Bizjak
17b5bd7b32 re PR target/55224 (FAIL: gcc.target/i386/tailcall-1.c scan-assembler jmp)
PR target/55224
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception
	to make a sibcall if one of the functions has void return type.

From-SVN: r193305
2012-11-07 20:30:48 +01:00
Manuel López-Ibáñez
7332899a42 re PR c/53063 (encode group options in the .opt files)
gcc/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* doc/invoke.texi (Wformat): Update.
c-family/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* c.opt (Wformat): Make it Alias Wformat=1.
	(Wformat-contains-nul,Wformat-extra-args,Wformat-nonliteral,
	Wformat-security,Wformat-y2k,Wformat-zero-length): Use
	LangEnabledBy.
	(Wformat=): RejectNegative. Use LangEnabledBy.
	(Wnonnull): Use LangEnabledBy.
	* c-opts.c (c_common_handle_option): Do not handle Wformat here.
	* c-format.c (set_Wformat): Delete.
	(decode_format_attr): Replace OPT_Wformat with OPT_Wformat_.
        (maybe_read_dollar_number):  Likewise.
        (avoid_dollar_number):  Likewise.
        (finish_dollar_format_checking):  Likewise.
        (check_format_info):  Likewise.
        (check_format_info_main):  Likewise.
        (check_format_types):  Likewise.
        (format_type_warning):  Likewise.
        * c-common.c (int):  Likewise.
        (check_function_sentinel):  Likewise.
        * c-common.h (warn_format,set_Wformat): Do not declare here.
testsuite/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* gcc.dg/warn-nsstring.c: Use -Wformat explicitly.

From-SVN: r193304
2012-11-07 18:27:14 +00:00
Manuel López-Ibáñez
0829c7f7c5 optc-gen.awk: Factor code out to...
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* optc-gen.awk: Factor code out to...
	* opt-functions.awk (lang_enabled_by): ... this new function.

From-SVN: r193303
2012-11-07 18:11:01 +00:00
Manuel López-Ibáñez
34a180a642 re PR c/53063 (encode group options in the .opt files)
c-family/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* c.opt(Warray-bounds,Wdelete-non-virtual-dtor,Wenum-compare,
	Wmain,Woverlength-strings, Wunknown-pragmas,Wunused-macros):
	Use LangEnabledBy.
	(Wswitch,Wswitch-default,Wswitch-enum): Likewise. Move here from
	common.opt.
	(Wvariadic-macros): Init(1).
	* c-opts.c (c_common_handle_option): Do not handle them
	explicitly.
	(c_common_post_options): Likewise.
	(sanitize_cpp_opts): warn_unused_macros is now
	cpp_warn_unused_macros.
	(push_command_line_include): Likewise.
	* c-common.c (warn_unknown_pragmas): Do not define.
	* c-common.h (warn_unknown_pragmas): Do not declare.
gcc/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt.
fortran/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/53063
	* options.c (set_Wall): Do not set warn_switch here.

From-SVN: r193302
2012-11-07 17:54:11 +00:00
Manuel López-Ibáñez
3f46d6a577 re PR c/51294 (spurious warning from -Wconversion in C and C++ in conditional expressions)
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/51294
c-family/
	* c-common.c (conversion_warning): Handle conditional expressions.
testsuite/
	* c-c++-common/pr51294.c: New.

From-SVN: r193301
2012-11-07 16:58:03 +00:00
Yufeng Zhang
dc2d3c67bc aarch64.c (aarch64_expand_prologue): add the missing argument 'Pmode' to the 'plus_constant' call.
gcc/ChangeLog

2012-11-07  Yufeng Zhang  <yufeng.zhang@arm.com>

	* config/aarch64/aarch64.c (aarch64_expand_prologue): add the missing
	argument 'Pmode' to the 'plus_constant' call.

From-SVN: r193299
2012-11-07 16:13:27 +00:00
Martin Jambor
2c9561b513 re PR tree-optimization/53787 (Possible IPA-SRA / IPA-CP improvement)
2012-11-07  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/53787
	* ipa-cp.c (ipcp_value_source): New field offset.
	(ipcp_agg_lattice): New type.
	(ipcp_param_lattices): Likewise, move virt_call from ipcp_lattice here.
	(ipcp_agg_lattice_pool): New variable.
	(ipa_get_parm_lattices): New function.
	(ipa_get_lattice): Turned into ipa_get_scalar_lat, use the above.
	Adjusted all callers.
	(print_lattice): New function.
	(print_all_lattices): Use the above, also print aggregate lattices.
	(set_agg_lats_to_bottom): New function.
	(set_agg_lats_contain_variable): Likewise.
	(set_all_contains_variable): Likewise.
	(initialize_node_lattices): Also handle aggregate lattices, set
	virt_call in ipcp_param_lattices.
	(add_value_source): Handle offsets.
	(add_value_to_lattice): Likewise.
	(add_scalar_value_to_lattice): New function.
	(propagate_vals_accross_pass_through): Use add_scalar_value_to_lattice.
	(propagate_vals_accross_ancestor): Likewise.
	(propagate_accross_jump_function): Renamed to
	propagate_scalar_accross_jump_function, use
	add_scalar_value_to_lattice.
	(set_check_aggs_by_ref): New function.
	(merge_agg_lats_step): Likewise.
	(set_chain_of_aglats_contains_variable): Likewise.
	(merge_aggregate_lattices): Likewise.
	(propagate_constants_accross_call): Also handle aggregate lattices.
	(hint_time_bonus): New function.
	(context_independent_aggregate_values): Likewise.
	(gather_context_independent_values): Also handle agggregate values.
	(agg_jmp_p_vec_for_t_vec): New function.
	(estimate_local_effects): Also handle agggregate values.
	(add_all_node_vals_to_toposort): Likewise.
	(ipcp_propagate_stage): Use struct ipcp_param_lattices.
	(get_clone_agg_value): New function.
	(cgraph_edge_brings_value_p): Also handle agggregate values.
	(create_specialized_node): Likewise.
	(find_more_values_for_callers_subset): Rename to
	find_more_scalar_values_for_callers_subset.  Modify dump.
	(copy_plats_to_inter): New function.
	(intersect_with_plats): Likewise.
	(agg_replacements_to_vector): Likewise.
	(intersect_with_agg_replacements): Likewise.
	(find_aggregate_values_for_callers_subset): Likewise.
	(known_aggs_to_agg_replacement_list): Likewise.
	(cgraph_edge_brings_all_scalars_for_node): Likewise.
	(cgraph_edge_brings_all_agg_vals_for_node): Likewise.
	(perhaps_add_new_callers): Old functionality moved to
	cgraph_edge_brings_all_scalars_for_node, call it and
	cgraph_edge_brings_all_agg_vals_for_node.
	(ipcp_val_in_agg_replacements_p): New function.
	(decide_about_value): New function.
	(decide_whether_version_node): A lot of functionality moved to
	decide_about_value.  Also handle agggregate values.
	(ipcp_driver): Also allocate ipcp_agg_lattice_pool.
	(pass_ipa_cp): Fill in new entries.
	* ipa-prop.c (ipa_node_agg_replacements): New variable.
	(free_parms_ainfo): New function.
	(ipa_analyze_node): Use free_parms_ainfo to free stuff.
	(ipa_find_agg_cst_for_param): Do not rely on offset ordering.
	(ipa_set_node_agg_value_chain): New function.
	(ipa_node_removal_hook): Also handle ipa_node_agg_replacements.
	(ipa_node_duplication_hook): Likewise.
	(ipa_free_all_structures_after_ipa_cp): Also free ipcp_agg_lattice_pool.
	(ipa_free_all_structures_after_iinln): Likewise.
	(ipa_dump_agg_replacement_values): New function.
	(write_agg_replacement_chain): Likewise.
	(read_agg_replacement_chain): Likewise.
	(ipa_prop_write_all_agg_replacement): Likewise.
	(read_replacements_section): Likewise.
	(ipa_prop_read_all_agg_replacement): Likewise.
	(adjust_agg_replacement_values): Likewise.
	(ipcp_transform_function): Likewise.
	* ipa-prop.h: Also define heap vector of ipa_agg_jf_item_t and of
	ipa_agg_jump_function_t.
	(ipa_node_params): Make lattices an array of ipcp_param_lattices.
	(ipa_agg_replacement_value): New type and its vector.
	(ipa_set_node_agg_value_chain) Declare.
	(ipa_node_agg_replacements): Likewise.
	(ipa_get_agg_replacements_for_node): New function.
	(ipcp_agg_lattice_pool): Declare.
	(ipa_dump_agg_replacement_values): Likewise.
	(ipa_prop_write_all_agg_replacement): Likewise.
	(ipa_prop_read_all_agg_replacement): Likewise.
	(ipcp_transform_function): Likewise.
	* ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time): Pass around
	known aggregates and hints.
	* ipa-inline.h: include ipa-prop.h.
	(estimate_ipcp_clone_size_and_time): Adjust declaration.
	* lto-streamer.h (lto_section_type): New item
	LTO_section_ipcp_transform.
	* lto-section-in.c (lto_section_name): New element ipcp_trans.
	* params.def (PARAM_IPA_CP_LOOP_HINT_BONUS): New parameter.
	* Makefile.in (IPA_INLINE_H): New.  Use everywhee instead of
	ipa-inline.h.

	* testsuite/gcc.dg/ipa/ipa-5.c: Adjust.
	* testsuite/gcc.dg/ipa/ipcp-agg-1.c: New test.
	* testsuite/gcc.dg/ipa/ipcp-agg-2.c: Likewise.
	* testsuite/gcc.dg/ipa/ipcp-agg-3.c: Likewise.
	* testsuite/gcc.dg/ipa/ipcp-agg-4.c: Likewise.
	* testsuite/gcc.dg/ipa/ipcp-agg-5.c: Likewise.
	* testsuite/gcc.dg/ipa/ipcp-agg-6.c: Likewise.
	* testsuite/gfortran.dg/pr48636.f90: Add -fno-ipa-cp.
	* testsuite/gfortran.dg/pr48636-2.f90: New test.
	* testsuite/gfortran.dg/pr53787.f90: Likewise.

From-SVN: r193298
2012-11-07 16:55:54 +01:00
David Edelsohn
a57d75dc70 * testsuite/libgomp.c++/pr24455.C: Use -Wl,-G on AIX.
From-SVN: r193296
2012-11-07 09:16:04 -05:00