Commit Graph

119421 Commits

Author SHA1 Message Date
Dehao Chen e368f44fef tree-eh.c (lower_try_finally_onedest): Set correct location for deallocator.
gcc:
	2012-10-10  Dehao Chen  <dehao@google.com>

	* tree-eh.c (lower_try_finally_onedest): Set correct location for
	deallocator.
	* gimplify.c (gimplify_expr): Set correct location for TRY stmt.

gcc/cp:
	2012-10-10  Dehao Chen  <dehao@google.com>

	* cp-gimplify.c (cp_genericize_r): Set location for TRY expr.

testsuite:
	2012-10-10  Dehao Chen  <dehao@google.com>

	* g++.dg/debug/dwarf2/deallocator.C: Cover more deallocator cases.

From-SVN: r192285
2012-10-10 01:26:30 +00:00
Oleg Endo 2c62c8ec64 re PR target/52480 (SH Target: SH4A movua.l does not work for big endian)
PR target/52480
	* config/sh/sh.md (extv, extzv): Check that operands[3] is zero,
	regardless of the endianness.

	PR target/52480
	* gcc.target/sh/sh4a-bitmovua.c: Compact skip-if list.
	Add runtime tests.

From-SVN: r192283
2012-10-10 00:50:37 +00:00
GCC Administrator 73b043cda1 Daily bump.
From-SVN: r192282
2012-10-10 00:19:26 +00:00
Paolo Carlini 6a0260352e re PR c++/53307 (internal crash with variadic templates and decltype)
2012-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/53307
	* g++.dg/cpp0x/decltype44.C: New.

From-SVN: r192279
2012-10-09 23:37:07 +00:00
Daniel Krugler b3618b7167 type_traits (common_time): Provide "SFINAE-friendly" implementation.
2012-10-09  Daniel Krugler  <daniel.kruegler@googlemail.com>

	* include/std/type_traits (common_time): Provide "SFINAE-friendly"
	implementation.
	(__success_type, __failure_type): Fix.
	* include/std/chrono (common_type): Likewise for the chrono::time_point
	specialization.
	* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc: New.
	* testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
	Likewise.
	* testsuite/20_util/duration/requirements/sfinae_friendly_1.cc:
	Likewise.
	* testsuite/20_util/common_type/requirements/typedefs-1.cc: Adjust wrt
	LWG 2141.
	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
	dg-error line numbers.
	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.

	* testsuite/20_util/result_of/sfinae_friendly_1.cc: Trivial stylistic
	tweaks.
	* testsuite/20_util/result_of/sfinae_friendly_2.cc: Likewise.

From-SVN: r192276
2012-10-09 22:31:44 +00:00
Steve Ellcey 71111e6b20 ext_ins.c: Modify f2 to aviod uninitialized data.
2012-10-09  Steve Ellcey  <sellcey@mips.com>

	* gcc.target/ext_ins.c: Modify f2 to aviod uninitialized data.

From-SVN: r192274
2012-10-09 22:04:11 +00:00
Lawrence Crowl 703c8606fa Change more non-GTY hash tables to use the new type-safe template hash table.
Constify member function parameters that can be const.
Correct a couple of expressions in formerly uninstantiated templates.

The new code is 0.362% faster in bootstrap, with a 99.5% confidence of
being faster.

Tested on x86-64.


Index: gcc/java/ChangeLog

2012-10-01  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o.
	(JCFDUMP_OBJS): Add dependence on hash-table.o.
	(jcf-io.o): Add dependence on hash-table.h.
	* jcf-io.c (memoized_class_lookups): Change to use type-safe hash table.

Index: gcc/c/ChangeLog

2012-10-09  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in (c-decl.o): Add dependence on hash-table.h.
	* c-decl.c (detect_field_duplicates_hash): Change to new type-safe
	hash table.

Index: gcc/objc/ChangeLog

2012-10-01  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in (OBJC_OBJS): Add dependence on hash-table.o.
	(objc-act.o): Add dependence on hash-table.h.
	* objc-act.c (objc_detect_field_duplicates): Change to new type-safe
	hash table.

Index: gcc/ChangeLog

2012-10-09  Lawrence Crowl  <crowl@google.com>

	* Makefile.in (fold-const.o): Add depencence on hash-table.h.
	(dse.o): Likewise.
	(cfg.o): Likewise.
	* fold-const.c (fold_checksum_tree): Change to new type-safe hash table.
	* (print_fold_checksum): Likewise.
	* cfg.c (var bb_original): Likewise.
	* (var bb_copy): Likewise.
	* (var loop_copy): Likewise.
	* hash-table.h (template hash_table): Constify parameters for find...
	and remove_elt... member functions.
        (hash_table::empty) Correct size expression.
        (hash_table::clear_slot) Correct deleted entry assignment.
	* dse.c (var rtx_group_table): Change to new type-safe hash table.

Index: gcc/cp/ChangeLog

2012-10-09  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in (class.o): Add dependence on hash-table.h.
	(tree.o): Likewise.
	(semantics.o): Likewise.
	* class.c (fixed_type_or_null): Change to new type-safe hash table.
	* tree.c (verify_stmt_tree): Likewise.
	(verify_stmt_tree_r): Likewise.
	* semantics.c (struct nrv_data): Likewise.

From-SVN: r192273
2012-10-09 21:21:36 +00:00
Steven Bosscher aa4723d7f5 * basic-block. (profile_record): New struct, moved from passes.c.
* cfghooks.h (struct cfg_hooks) <account_profile_record>: New hook.
	(account_profile_record): New prototype.
	* cfghooks.c (account_profile_record): New function.
	* tree-cfg.c (gimple_account_profile_record): New function
	(gimple_cfg_hooks): Add it.
	* cfgrtl.c (rtl_account_profile_record): New function
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Add it.
	* passes.c (check_profile_consistency): Simplify.  Move IR-dependent
	code around using cfghooks machinery.

From-SVN: r192271
2012-10-09 20:37:11 +00:00
Uros Bizjak ca4277584f ChangeLog: Move testsuite entries ...
* ChangeLog: Move testsuite entries ...
	* testsuite/ChangeLog: ... here.

From-SVN: r192270
2012-10-09 22:27:59 +02:00
Oleg Endo be06a8b00a re PR target/54760 ([SH] Add __builtin_thread_pointer, __builtin_set_thread_pointer)
PR target/54760
	* doc/extend.texi (Target Builtins): Add SH built-in section.
	Document __builtin_thread_pointer and __builtin_set_thread_pointer.

From-SVN: r192269
2012-10-09 18:59:11 +00:00
Andrew MacLeod 3cedb9108b re PR libstdc++/54861 (std::atomic_signal_fence(std::memory_order_seq_cst) issues unnecessary mfence)
2012-10-09  Andrew MacLeod  <amacleod@redhat.com>

	PR libstdc++/54861
	* include/bits/atomic_base.h (atomic_signal_fence): Call
	__atomic_signal_fence instead of __atomic_thread_fence.

From-SVN: r192268
2012-10-09 18:40:02 +00:00
Ian Lance Taylor e561a9920c Add support for tracing through shared libraries.
* configure.ac: Check for link.h and dl_iterate_phdr.
	* elf.c: #include <link.h> if system has dl_iterate_phdr.  #undef
	ELF macros before #defining them.
	(dl_phdr_info, dl_iterate_phdr): Define if system does not have
	dl_iterate_phdr.
	(struct elf_syminfo_data): Add next field.
	(elf_initialize_syminfo): Initialize next field.
	(elf_add_syminfo_data): New static function.
	(elf_add): New static function, broken out of
	backtrace_initialize.  Call backtrace_dwarf_add instead of
	backtrace_dwarf_initialize.
	(struct phdr_data): Define.
	(phdr_callback): New static function.
	(backtrace_initialize): Call elf_add.
	* dwarf.c (struct dwarf_data): Add next and base_address fields.
	(add_unit_addr): Add base_address parameter.  Change all callers.
	(add_unit_ranges, build_address_map): Likewise.
	(add_line): Add ddata parameter.  Change all callers.
	(read_line_program, add_function_range): Likewise.
	(dwarf_lookup_pc): New static function, broken out of
	dwarf_fileline.
	(dwarf_fileline): Call dwarf_lookup_pc.
	(build_dwarf_data): New static function.
	(backtrace_dwarf_add): New function.
	(backtrace_dwarf_initialize): Remove.
	* internal.h (backtrace_dwarf_initialize): Don't declare.
	(backtrace_dwarf_add): Declare.
	* configure, config.h.in: Rebuild.

From-SVN: r192267
2012-10-09 18:20:45 +00:00
Benjamin Kosnik 1a61077e0e 808590.cc: Fix constant value.
2012-10-09  Benjamin Kosnik  <bkoz@redhat.com>

	* testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc:
	Fix constant value.

From-SVN: r192265
2012-10-09 16:21:27 +00:00
Paolo Carlini 5b5d3d7625 re PR c++/53763 (Missing error check on decltype when used within variadic template argument list)
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/53763
	* g++.dg/cpp0x/decltype43.C: New.

From-SVN: r192263
2012-10-09 16:09:32 +00:00
Venkataramanan Kumar a5497b1238 Fix for PR53397 by making prefecthing less agressive
From-SVN: r192261
2012-10-09 15:48:45 +00:00
Paolo Carlini eeeef8f4f9 re PR libstdc++/54869 (ext/random/simd_fast_mersenne_twister_engine/cons/default.cc FAILs)
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/54869
	* include/ext/random (simd_fast_mersenne_twister_engine): Provide
	only for little endian targets.
	* include/ext/random.tcc: Likewise.
	* config/cpu/i486/opt/ext/opt_random.h: Likewise.
	* testsuite/lib/libstdc++.exp (check_v3_target_little_endian): Add.
	* testsuite/lib/dg-options.exp (dg-require-little-endian): Add.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	operators/equal.cc: Use the latter.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	operators/serialize.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	operators/inequal.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	cons/copy.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	cons/seed1.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	cons/seed2.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	cons/default.cc: Likewise.
	* testsuite/ext/random/simd_fast_mersenne_twister_engine/
	cons/seed_seq.cc: Likewise.

From-SVN: r192256
2012-10-09 14:50:19 +00:00
Richard Guenther 7b575cfaf3 re PR bootstrap/54837 (lto bootstrap error: ICE in expand_debug_source_expr, at cfgexpand.c:3538)
2012-10-09  Richard Guenther  <rguenther@suse.de>

	PR middle-end/54837
	* cfgexpand.c (expand_debug_source_expr): Move checking
	code conditional on a found decl_debug_args vector.

From-SVN: r192255
2012-10-09 14:40:01 +00:00
Rainer Orth d2310dd112 Fix gcc.target/i386/long-double-80-7.c (PR target/54866)
PR target/54866
	* gcc.target/i386/long-double-80-7.c: Add -msse2 to dg-options.

From-SVN: r192253
2012-10-09 13:40:21 +00:00
Richard Guenther 58191b2eb7 tree-streamer.c (streamer_tree_cache_get): Move ...
2012-10-09  Richard Guenther  <rguenther@suse.de>

	* tree-streamer.c (streamer_tree_cache_get): Move ...
	* tree-streamer.h (streamer_tree_cache_get): ... here as inline.

From-SVN: r192252
2012-10-09 13:34:54 +00:00
Jan Hubicka 73367f92ad loop-unroll.c (unroll_loop_constant_iterations): Add update of loop->nb_iterations_upper_bound I missed in my previous commit...
* loop-unroll.c (unroll_loop_constant_iterations): Add
	update of loop->nb_iterations_upper_bound I missed in my previous
	commit; use TRUNC_DIV_EXPR instead of FLOOR_DIV_EXPR to divide
	iteration count.
	(decide_unroll_runtime_iterations): Avoid overflow.
	(unroll_loop_runtime_iterations): Use TRUNC_DIV_EXPR instead of
	FLOOR_DIV_EXPR to update iteration bounds.
	(decide_peel_simple): Avoid integer overflow when deciding
	on number of peelings.
	(decide_unroll_stupid): Likewise.

From-SVN: r192251
2012-10-09 13:10:37 +00:00
Tobias Burnus 0b8c30f9aa lto-cgraph.c (input_node_opt_summary): Remove unused code.
gcc/
2012-10-08  Tobias Burnus  <burnus@net-b.de>

	* lto-cgraph.c (input_node_opt_summary): Remove unused code.
	* lto-opts.c (append_to_collect_gcc_options): Fix condition.
	* lto-symtab.c (lto_cgraph_replace_node): Don't xstrdup string
	which is passed to fprintf.

gcc/lto/
2012-10-08  Tobias Burnus  <burnus@net-b.de>

	* lto-lang.c (lto_register_builtin_type): Avoid useless
	decl creation.
	* lto-object.c (lto_obj_file_open, lto_obj_file_open): Free memory.

From-SVN: r192250
2012-10-09 13:46:25 +02:00
Paolo Carlini 5d9de0d0a5 re PR c++/54194 (misleading suggestion about arithmetic in operand of '|')
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54194
	* tree.h: Add EXPR_LOC_OR_LOC.

c-family/
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54194
	* c-common.c (warn_about_parentheses): Add location_t parameter;
	use EXPR_LOC_OR_LOC.
	* c-common.h: Update declaration.

c/
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54194
	* c-typeck.c (parser_build_binary_op): Update warn_about_parentheses
	call.

/cp
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54194
	* typeck.c (build_x_binary_op): Update warn_about_parentheses call.
	* parser.c (cp_parser_binary_expression): Use SET_EXPR_LOCATION
	on current.lhs.

/testsuite
2012-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54194
	* g++.dg/warn/Wparentheses-26.C: Adjust.
	* g++.dg/warn/Wparentheses-27.C: New.

From-SVN: r192246
2012-10-09 10:01:31 +00:00
Nick Clifton 3b86789289 re PR rtl-optimization/54739 (FAIL: gcc.dg/lower-subreg-1.c scan-rtl-dump subreg1 "Splitting reg")
PR rtl-optimization/54739
	* config/mcore/mcore.md: (anddi3, iordi3, xordi3): Delete
	patterns.

From-SVN: r192244
2012-10-09 09:21:47 +00:00
Nick Clifton d72fe292cf re PR target/54661 (mcore_output_movedouble: operation on ‘memexp’ may be undefined)
PR target/54661
	* config/mcore/mcore.c (mcore_output_movedouble): Fix typo.

From-SVN: r192241
2012-10-09 08:37:00 +00:00
Jonathan Wakely 8024199176 re PR libstdc++/54754 ([parallel mode] 'make check-parallel' only works on x86-64)
PR libstdc++/54754
	* include/parallel/compatibility.h: Use atomic built-ins when they are
	lock-free.

From-SVN: r192240
2012-10-09 09:16:13 +01:00
Uros Bizjak eef26c05fb ChangeLog: Move testsuite entries ...
* ChangeLog: Move testsuite entries ...
	* testsuite/ChangeLog: ... here.  Remove testsuite/ from filenames.

From-SVN: r192239
2012-10-09 09:28:35 +02:00
Marc Glisse a212e43fca re PR c++/54427 (Expose more vector extensions)
2012-10-09  Marc Glisse  <marc.glisse@inria.fr>

	PR c++/54427

c/
	* c-typeck.c: Include c-common.h.
	(enum stv_conv): Moved to c-common.h.
	(scalar_to_vector): Moved to c-common.c.
	(build_binary_op): Adapt to scalar_to_vector's new prototype.
	* Make-lang.in: c-typeck.c depends on c-common.h.

c-family/
	* c-common.c (scalar_to_vector): Moved from c-typeck.c. Support
	more operations. Make error messages optional.
	* c-common.h (enum stv_conv): Moved from c-typeck.c.
	(scalar_to_vector): Declare.

cp/
	* typeck.c (cp_build_binary_op): Handle mixed scalar-vector
	operations.
	[LSHIFT_EXPR, RSHIFT_EXPR]: Likewise.

gcc/
	* fold-const.c (fold_binary_loc): Use build_zero_cst instead of
	build_int_cst for a potential vector.

testsuite/
	* c-c++-common/vector-scalar.c: New testcase.
	* g++.dg/ext/vector18.C: New testcase.
	* g++.dg/ext/vector5.C: This is not an error anymore.
	* gcc.dg/init-vec-1.c: Move ...
	* c-c++-common/init-vec-1.c: ... here. Adapt error message.
	* gcc.c-torture/execute/vector-shift1.c: Move ...
	* c-c++-common/torture/vector-shift1.c: ... here.
	* gcc.dg/scal-to-vec1.c: Move ...
	* c-c++-common/scal-to-vec1.c: ... here. Avoid narrowing for
	C++11. Adapt error messages.
	* gcc.dg/convert-vec-1.c: Move ...
	* c-c++-common/convert-vec-1.c: ... here.
	* gcc.dg/scal-to-vec2.c: Move ...
	* c-c++-common/scal-to-vec2.c: ... here.

From-SVN: r192238
2012-10-09 06:18:29 +00:00
Uros Bizjak f5220359f4 testsuite_abi.cc (check_version): Add CXXABI_1.3.7.
* testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_1.3.7.

From-SVN: r192237
2012-10-09 08:15:15 +02:00
GCC Administrator 425622ad2c Daily bump.
From-SVN: r192234
2012-10-09 00:18:47 +00:00
Joseph Myers 2383575dc2 * es.po: Update.
From-SVN: r192226
2012-10-09 00:01:54 +01:00
Uros Bizjak 69e3f332bb atom.md (atom_sse_4): Merge atom_sse_attr attibutes.
* config/i386/atom.md (atom_sse_4): Merge atom_sse_attr attibutes.
	(atom_sse_5): Ditto.

From-SVN: r192224
2012-10-08 22:48:38 +02:00
Marc Glisse b790dea2eb re PR middle-end/54400 (recognize vector reductions)
2012-10-08  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	PR target/54400
	* config/i386/i386.md (type attribute): Add sseadd1.
	(unit attribute): Add support for sseadd1.
	(memory attribute): Likewise.
	* config/i386/athlon.md: Likewise.
	* config/i386/core2.md: Likewise.
	* config/i386/atom.md: Likewise.
	* config/i386/ppro.md: Likewise.
	* config/i386/bdver1.md: Likewise.
	* config/i386/sse.md (sse3_h<plusminus_insn>v2df3): split into...
	(sse3_haddv2df3): ... expander.
	(*sse3_haddv2df3): ... define_insn. Accept permuted operands.
	(sse3_hsubv2df3): ... define_insn.
	(*sse3_haddv2df3_low): New define_insn.
	(*sse3_hsubv2df3_low): New define_insn.

gcc/testsuite/
	PR target/54400
	* gcc.target/i386/pr54400.c: New testcase.

From-SVN: r192223
2012-10-08 20:45:56 +00:00
Jakub Jelinek 9b2770f22c re PR c++/54858 (ICE in cp_tree_equal)
PR c++/54858
	* tree.c (cp_tree_equal): Handle FIELD_DECL.

	* g++.dg/template/pr54858.C: New test.

From-SVN: r192220
2012-10-08 21:39:56 +02:00
Jan Hubicka e3a8f1fa88 loop-unswitch.c (unswitch_single_loop): Use estimated_loop_iterations_int to prevent unswitching when...
* loop-unswitch.c (unswitch_single_loop): Use
	estimated_loop_iterations_int to prevent unswitching when loop
	is known to not roll.
	* tree-ssa-loop-niter.c (estimated_loop_iterations): Do not segfault
	when SCEV is not initialized.
	(max_loop_iterations): Likewise.
	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Use
	estimated_loop_iterations_int to prevent unswithcing when
	loop is known to not roll.
	* tree-scalar-evolution.c (scev_initialized_p): New function.
	* tree-scalar-evolution.h (scev_initialized_p): Likewise.
	* loop-unroll.c (decide_peel_once_rolling): Use
	max_loop_iterations_int.
	(unroll_loop_constant_iterations): Update
	nb_iterations_upper_bound and nb_iterations_estimate.
	(decide_unroll_runtime_iterations): Use
	estimated_loop_iterations or max_loop_iterations;
	(unroll_loop_runtime_iterations): fix profile updating.
	(decide_peel_simple): Use estimated_loop_iterations
	and max_loop_iterations.
	(decide_unroll_stupid): Use estimated_loop_iterations
	ad max_loop_iterations.
	* loop-doloop.c (doloop_modify): Use max_loop_iterations_int.
	(doloop_optimize): Likewise.
	* loop-iv.c (iv_number_of_iterations): Use record_niter_bound.
	(find_simple_exit): Likewise.
	* cfgloop.h (struct niter_desc): Remove niter_max.

From-SVN: r192219
2012-10-08 18:09:41 +00:00
Marek Polacek ee84cd3713 re PR debug/54831 (ICE: in vt_add_function_parameter, at var-tracking.c:9412 with -O -fno-split-wide-types -g)
PR54831.

From-SVN: r192218
2012-10-08 17:38:13 +00:00
Tobias Burnus da3202a857 lto.c (lto_wpa_write_files, [...]): Free lto_file struct after closing the file.
2012-10-08  Tobias Burnus  <burnus@net-b.de>

        * lto.c (lto_wpa_write_files, read_cgraph_and_symbols):
        Free lto_file struct after closing the file.

From-SVN: r192216
2012-10-08 18:51:10 +02:00
Dehao Chen 16fdb75f78 predict.c (predict_loops): Predict for short-circuit conditions.
gcc:
	2012-10-08  Dehao Chen  <dehao@google.com>

	* predict.c (predict_loops): Predict for short-circuit conditions.
	(predict_extra_loop_exits): New Function.

testsuite:
	2012-10-08  Dehao Chen  <dehao@google.com>

	* g++.dg/predict-loop-exit-1.C: New.
	* g++.dg/predict-loop-exit-2.C: New.
	* g++.dg/predict-loop-exit-3.C: New.

From-SVN: r192215
2012-10-08 16:45:21 +00:00
Jan Hubicka 2512a443d6 lto.c (remember_with_vars): Also fixup INTEGER_CST.
* lto/lto.c (remember_with_vars): Also fixup INTEGER_CST.
	(fixup_integer_cst): New functoin.
	(lto_ft_type): Fixup BASETYPE of methods and offsets.

From-SVN: r192214
2012-10-08 16:04:31 +00:00
Steven Bosscher 7b19209f29 bitmap.h (bitmap_and_into): Update prototype.
* bitmap.h (bitmap_and_into): Update prototype.
	* bitmap.c (bitmap_and_into): Return true if the target bitmap
	changed, false otherwise.

	* df.h (df_dump_insn_problem_function): New function type.
	(struct df_problem): Add two functions, to dump just before and
	just after an insn.
	(DF_RD_PRUNE_DEAD_DEFS): New changable flag.
	(df_dump_insn_top, df_dump_insn_bottom): New prototypes.
	* df-core (df_dump_region): Use dump_bb.
	(df_dump_bb_problem_data): New function.
	(df_dump_top, df_dump_bottom): Rewrite using df_dump_bb_problem_data.
	(df_dump_insn_problem_data): New function.
	(df_dump_insn_top, df_dump_insn_bottom): New functions.
	* df-scan.c (problem_SCAN): Add NULL fields for new members.
	* df-problems.c (df_rd_local_compute): Ignore hard registers if
	DF_NO_HARD_REGS is in effect.
	(df_rd_transfer_function): If DF_RD_PRUNE_DEAD_DEFS is in effect,
	prune reaching defs using the LR problem.
	(df_rd_start_dump): Fix dumping of DEFs map.
	(df_rd_dump_defs_set): New function.
	(df_rd_top_dump, df_rd_bottom_dump): Use it.
	(problem_RD): Add NULL fields for new members.
	(problem_LR, problem_LIVE): Likewise.
	(df_chain_bb_dump): New function.
	(df_chain_top_dump): Dump only for artificial DEFs and USEs,
	using df_chain_bb_dump.
	(df_chain_bottom_dump): Likewise.
	(df_chain_insn_top_dump, df_chain_insn_bottom_dump): New functions.
	(problem_CHAIN): Add them as new members.
	(problem_WORD_LR, problem_NOTE): Add NULL fields for new members.
	(problem_MD): Likewise.
	* cfgrtl.c (rtl_dump_bb): Use df_dump_insn_top and df_dump_insn_bottom.
	(print_rtl_with_bb): Likewise.

	* dce.c (init_dce): Use DF_RD_PRUNE_DEAD_DEFS.
	* loop-invariant.c (find_defs): Likewise.
	* loop-iv.c (iv_analysis_loop_init): Likewise.
	* ree.c (find_and_remove_re): Likewise.
	* web.c (web_main): Likewise.

From-SVN: r192213
2012-10-08 15:33:58 +00:00
Rainer Orth 76cee070fd Require tls_runtime in gcc.target/i386/pr54445-1.c
* gcc.target/i386/pr54445-1.c: Require tls_runtime, add tls options.

From-SVN: r192212
2012-10-08 15:05:15 +00:00
Jason Merrill 7c424acd9a Allow dynamic initialization of thread_locals.
gcc/cp/
	* decl.c: Define tls_aggregates.
	(expand_static_init): Remove sorry.  Add to tls_aggregates.
	* cp-tree.h: Declare tls_aggregates.
	* call.c (set_up_extended_ref_temp): Add to tls_aggregates.
	* decl2.c (var_needs_tls_wrapper): New.
	(var_defined_without_dynamic_init): New.
	(get_tls_init_fn, get_tls_wrapper_fn): New.
	(generate_tls_wrapper, handle_tls_init): New.
	(cp_write_global_declarations): Call handle_tls_init and
	enerate_tls_wrapper.
	* mangle.c (write_guarded_var_name): Split out from..
	(mangle_guard_variable): ...here.
	(mangle_tls_init_fn, mangle_tls_wrapper_fn): Use it.
	(decl_tls_wrapper_p): New.
	* semantics.c (finish_id_expression): Replace use of thread_local
	variable with a call to its wrapper.
libiberty/
	* cp-demangle.c (d_special_name, d_dump): Handle TH and TW.
	(d_make_comp, d_print_comp): Likewise.
include/
	* demangle.h (enum demangle_component_type): Add
	DEMANGLE_COMPONENT_TLS_INIT and DEMANGLE_COMPONENT_TLS_WRAPPER.

From-SVN: r192211
2012-10-08 10:45:37 -04:00
Jason Merrill 5b031b9b56 Support C++11 thread_local destructors.
gcc/cp/
	* decl.c (get_thread_atexit_node): New.
	(register_dtor_fn): Use it for TLS.
libstdc++-v3/
	* libsupc++/cxxabi.h: Declare __cxa_thread_atexit.
	* libsupc++/atexit_thread.cc: New.
	* libsupc++/Makefile.am (nested_exception.lo): Add it.
	* config/abi/pre/gnu.ver: Add __cxa_thread_atexit.

From-SVN: r192210
2012-10-08 10:45:24 -04:00
Jason Merrill b1db7f9139 Partial implementation of C++11 thread_local.
c-family/
	* c-common.c (c_common_reswords): Add thread_local.
cp/
	* decl.c (cp_finish_decl): Remove errors about non-trivial
	initialization and destruction of TLS variables.
	(register_dtor_fn): Add sorry about TLS variables.
	(expand_static_init): Add sorry about non-local TLS variables,
	or error with __thread.
	Don't emit thread-safety guards for local TLS variables.
	(grokdeclarator): thread_local in a function implies static.
	* decl.h: Adjust prototype.
	* decl2.c (get_guard): Copy DECL_TLS_MODEL.
	* parser.c (cp_parser_set_storage_class, cp_parser_set_decl_spec_type)
	(set_and_check_decl_spec_loc): Take the token rather than the location.
	Distinguish between __thread and thread_local.
	(cp_parser_set_storage_class): Don't complain about thread_local before
	extern/static.
	(token_is__thread): New.
	* call.c (make_temporary_var_for_ref_to_temp): Handle TLS.
	* cp-tree.h (DECL_GNU_TLS_P): New.
	(cp_decl_specifier_seq): Add gnu_thread_keyword_p.

From-SVN: r192209
2012-10-08 10:45:12 -04:00
Jason Merrill 2991392b55 rs6000.c (rs6000_code_end): Protect the use of ASM_WEAKEN_DECL with #if RS6000_WEAK.
* config/rs6000/rs6000.c (rs6000_code_end): Protect the use of
	ASM_WEAKEN_DECL with #if RS6000_WEAK.

From-SVN: r192207
2012-10-08 10:32:42 -04:00
Richard Guenther 91af9dc984 re PR tree-optimization/54825 (ICE with vector extension)
2012-10-08  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/54825
	* tree-ssa-sccvn.c (vn_nary_length_from_stmt): Handle BIT_FIELD_REF.
	(init_vn_nary_op_from_stmt): Likewise.
	* tree-ssa-pre.c (compute_avail): Use vn_nary_op_lookup_stmt.
	* tree-ssa-sccvn.h (sizeof_vn_nary_op): Avoid overflow.

From-SVN: r192205
2012-10-08 11:58:03 +00:00
Richard Guenther 585d0dc43c tree-ssa-pre.c (postorder_num): New global.
2012-10-08  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (postorder_num): New global.
	(compute_antic): Initialize all blocks and adjust for
	generic postorder.
	(my_rev_post_order_compute): Remove.
	(init_pre): Use inverted_post_order_compute.

From-SVN: r192204
2012-10-08 11:55:13 +00:00
Bernd Schmidt 975ccf2291 sched-int.h (schedule_block): Adjust declaration.
* sched-int.h (schedule_block): Adjust declaration.
	* sched-rgn.c (bb_state_array, bb_state): New static variables.
	(sched_rgn_init): Initialize them.
	(sched_rgn_free): Free them.
	(schedule_region): Save scheduling state for future blocks, and
	pass such state to schedule_block.
	* params.def (PARAM_SCHED_STATE_EDGE_PROB_CUTOFF): New.
	* doc/invoke.texi (--param): Document it.
	* haifa-sched.c (schedule_block): New arg init_state.  Use it to
	initialize state if nonnull.  All callers changed.
	Call advance_one_cycle after scheduling.

From-SVN: r192203
2012-10-08 11:26:16 +00:00
Georg-Johann Lay 1e422ffff3 re PR target/54854 ([avr] Deprecate and finally remove the -mshort-calls command line option)
PR target/54854
	* doc/invoke.texi (AVR Options): Remove -mshort-calls.
	* config/avr/avr.opt (-mshort-calls): Remove option.
	* config/avr/avr.h (AVR_HAVE_JMP_CALL): Don't depend on
	TARGET_SHORT_CALLS.

From-SVN: r192201
2012-10-08 10:13:56 +00:00
Oleg Endo f429813df1 re PR middle-end/54685 ([SH] Improve unsigned int comparison with 0x7FFFFFFF)
PR target/54685
	* config/sh/sh.md (one_cmplsi2): Make insn_and_split.  Add manual
	combine matching for an insn sequence where a ge:SI pattern can be used.

	PR target/54685
	* gcc.target/sh/pr54685.c: New.

From-SVN: r192200
2012-10-08 10:09:28 +00:00
Dodji Seketeli e28d52cffb PR c++/53528 C++11 attribute support
This patch implements the c++-11 generalized attributes, described in
the N2761 paper[1].

The idea is to modify the front-end to accept the new attribute syntax
(including alignas expressions) and to build an internal
representation similar to the one we already have for GNU attributes.

This lets us re-use our existing GNU attribute mechanisms to support
the generalized c++11 attributes.

The patch does change the existing internal representation to support
scoped attribute (aka attributes with namespaces), which is a concept
that doesn't exist in GNU attributes.  I have thus put all existing
GNU extension attributes into the "gnu" namespace.  For instance, in
C++-11, the "unused" attribute would be represented as
"[[gnu::unused]]".  Because there is no syntax for scoped attributes
in C, writting "__attribute__((unused))" unconditionnally refers to
the "unused" attribute in the "gnu" namespace.

Note that this patch follows a conservative understanding of the
specification by disallowing attributes appertaining to types, unless
they apply to a type definition.

Tested on x86_64-unknown-linux-gnu and powerpc64-unknown-linux-gnu.

[1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf

gcc/
	* plugin.h (register_scoped_attributes): Declare new function.
	* tree.h (enu attribute_flags::ATTR_FLAG_CXX_11): New flag.
	(lookup_scoped_attribute_spec, cxx_11_attribute_p)
	(get_attribute_name, get_attribute_namespace): Declare new functions.
	(struct attribute_spec): Remove const qualifier from the members.
	* tree.c (comp_type_attributes, private_lookup_attribute)
	(lookup_ident_attribute, remove_attribute, merge_attribute)
	(attribute_hash_list, attribute_list_contained): Use
	get_attribute_name.
	* attribs.c (decl_attributes): Don't crash on error_mark_node.
	Forbid c++11 attributes appertaining to type-specifiers.
	(attribute_hash): Remove global variable.
	(attributes_table): New global variable.
	(find_attribute_namespace, register_scoped_attribute): New static
	functions.
	(register_scoped_attributes, lookup_scoped_attribute_spec)
	(cxx11_attribute_p, get_attribute_name, get_attribute_namespace):
	New public functions.
	(init_attributes): Register all the GNU attributes into the "gnu"
	namespace.
	(register_attribute): Use register_scoped_attribute to register
	the attribute into the "gnu" namespace.
	(lookup_attribute_spec): Use lookup_scoped_attribute_spec to
	lookup the attribute in the "gnu" namespace.
	(decl_attributes): Use new get_attribute_namespace and
	lookup_scoped_attribute_spec to consider attribute namespaces when
	looking up attributes.  When operating in c++-11 mode, pass flag
	ATTR_FLAG_CXX11 to the spec handler.

gcc/c-family/

	* c-common.h (bitfield_p, cxx_fundamental_alignment_p): Declare
	new functions.
	* c-common.c (check_cxx_fundamental_alignment_constraints): New
	static function.
	(handle_aligned_attribute): In choose strictest alignment
	among many.  Use new check_cxx_fundamental_alignment_constraints.
	(handle_transparent_union_attribute): In c++11 attribute syntax,
	don't look through typedefs.

gcc/cp/

	* cp-tree.h (enum cpp0x_warn_str::CPP0X_ATTRIBUTES): New member.
	(enum cp_decl_spec::ds_std_attribute): New enumerator.
	(struct cp_decl_specifier_seq::std_attributes): New field.
	(cxx_alignas_expr, warn_misplaced_attr_for_class_type): Declare
	new functions.
	(check_tag_decl): Take an extra parameter for explicit
	instantiations.
	* decl.c (warn_misplaced_attr_for_class_type): Extract from ...
	(check_tag_decl): ... here.  Add check for c++11 attributes being
	applied to an explicit instantiation.  Take an extra parameter for
	explicit instantiations.
	(grokdeclarator): Make sure a c++11 attribute after an array
	declarator appertains to the array, an attribute after a function
	declarator appertains to the function type, an attribute after a
	declarator-id appertains to the entity being declared, and an
	attribute after a pointer declarator appertains to the pointer.
	* decl2.c (is_late_template_attribute): Use get_attribute_name.
	* error.c (maybe_warn_cpp0x): Support
	CPP0X_GENERALIZED_ATTRIBUTES.
	* parser.c (cp_next_tokens_can_be_attribute_p)
	(cp_next_tokens_can_be_gnu_attribute_p)
	(cp_next_tokens_can_be_std_attribute_p)
	(cp_nth_tokens_can_be_attribute_p)
	(cp_nth_tokens_can_be_gnu_attribute_p)
	(cp_nth_tokens_can_be_std_attribute_p)
	(cp_parser_gnu_attribute_list, cp_parser_std_attribute)
	(cp_parser_std_attribute_spec, cp_parser_std_attribute_spec_seq)
	(cp_parser_attributes_opt, cp_parser_std_attribute_list): New
	static functions.
	(cp_parser_gnu_attributes_opt): Replace cp_parser_attributes_opt.
	(cp_parser_gnu_attribute_list): Replace cp_parser_attribute_list.
	(cp_parser_postfix_expression): Disallow "[[" tokens here.
	(cp_parser_label_for_labeled_statement): Use take an extra
	parameter for attributes.
	(cp_parser_block_declaration): Use
	cp_nth_tokens_can_be_std_attribute_p here.
	(cp_parser_decl_specifier_seq): Likewise.  Store C++11 attributes
	that appears in in decl specifiers in cp_decl_specifier_seq::std_attributes.
	declaration.  Emit proper warning about misplaced c++11 attributes
	for class type.
	(cp_parser_explicit_instantiation): Adjust call to check_tag_decl.
	(cp_parser_init_declarator):  Parsing attributes here is no more a
	GNU extension in c++-11.
	(cp_parser_type_specifier_seq): Use
	cp_next_tokens_can_be_attribute_p.
	(cp_parser_direct_declarator): Likewise.  Hang c++11 attributes
	following the declarator to its syntactic construct.  It'll later
	be applied to the proper appertaining entity by grokdeclarator.
	(cp_parser_ptr_operator): Likewise.
	(make_declarator): Initialize cp_declarator::std_attribute.
	(make_pointer_declarator, make_reference_declarator)
	(make_ptrmem_declarator, cp_parser_make_indirect_declarator): Take
	attributes that appertain to the pointer/reference in argument.
	(cp_parser_ptr_operator): Take an out parameter for c++11
	attributes.  Update comments.
	(cp_parser_new_declarator_opt)
	(cp_parser_conversion_declarator_opt): Adjust.
	(cp_parser_declarator): Likewise.  Handle C++11 attributes.
	Rename attributes to gnu_attribute for better legibility.
	(cp_parser_simple_declaration): Update comment.
	(cp_parser_class_specifier_1): Parse GNU attributes specifically
	(cp_parser_enum_specifier): Accept only gnu attributes after the
	specifier.
	(cp_parser_member_declaration): Don't clear attributes -- intended
	for the entity being declared -- too early because check_tag_decl
	needs them.
	(cp_parser_statement): Update comment.  Parse optional c++11
	attributes at the beginning of the relevant kind of statements and
	ignore them, for now, unless when calling
	cp_parser_label_for_labeled_statement.
	(cp_parser_label_for_labeled_statement): Take c++11 attributes
	in parameter.
	* semantics.c (potential_constant_expression_1): Likewise.
	* typeck.c (fundamental_alignment_p, cxx_alignas_expr): New public
	functions.

gcc/testsuite/

	* g++.dg/cpp0x/gen-attrs-1.C: New test.
	* g++.dg/cpp0x/gen-attrs-2.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-2-1.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-3.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-4.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-5.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-6.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-7.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-8.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-9.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-10.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-11.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-12.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-13.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-14.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-15.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-16.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-17.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-18.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-19.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-20.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-21.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-22.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-23.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-24.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-25.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-26.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-27.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-28.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-29.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-30.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-31.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-32.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-33.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-34.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-35.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-36.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-36-1.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-37.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-38.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-39.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-39-1.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-40.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-41.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-42.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-43.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-44.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-45.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-46.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-47.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-47-1.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-48.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-49.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-50.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-51.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-52.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-53.C: Likewise.

From-SVN: r192199
2012-10-08 11:29:05 +02:00