Commit Graph

128382 Commits

Author SHA1 Message Date
Jakub Jelinek
eb259c4a32 re PR ipa/60026 (ICE at -O3 on valid code (with the optimize pragma) on x86_64-linux-gnu)
PR ipa/60026
	* tree-inline.c (copy_forbidden): Fail for
	__attribute__((optimize (0))) functions.

	* c-c++-common/torture/pr60026.c: New test.

From-SVN: r207463
2014-02-04 14:04:37 +01:00
Jakub Jelinek
30540e7958 re PR other/58712 (issues found by --enable-checking=valgrind)
PR other/58712
	* omp-low.c (simd_clone_struct_copy): If from->inbranch
	is set, copy one less argument.
	(expand_simd_clones): Don't subtract clone_info->inbranch
	from simd_clone_struct_alloc argument.

From-SVN: r207462
2014-02-04 13:31:30 +01:00
Jakub Jelinek
92d05580aa re PR other/58712 (issues found by --enable-checking=valgrind)
PR other/58712
	* omp-low.c (simd_clone_struct_copy): If from->inbranch
	is set, copy one less argument.

From-SVN: r207461
2014-02-04 13:19:32 +01:00
Jakub Jelinek
be3afd6746 re PR rtl-optimization/57915 (ICE in set_address_disp, at rtlanal.c:5537)
PR rtl-optimization/57915
	* recog.c (simplify_while_replacing): If all unary/binary/relational
	operation arguments are constant, attempt to simplify those.

	* gcc.target/i386/pr57915.c: New test.

From-SVN: r207460
2014-02-04 13:14:52 +01:00
Jakub Jelinek
81c87471e9 re PR sanitizer/60055 (Invalid binding of __tsan_default_options)
PR sanitizer/60055
	* tsan/tsan_flags.cc (__tsan_default_options): Add
	SANITIZER_INTERFACE_ATTRIBUTE.  Backport from upstream r200747.
	* tsan/tsan_rtl.cc (__tsan::OnFinalize): Likewise.

From-SVN: r207459
2014-02-04 11:46:22 +01:00
Rainer Orth
25c90aae33 Fix g++.dg/init/dso_handle2.C on Solaris
* g++.dg/init/dso_handle2.C: Compile with -fuse-cxa-atexit.

From-SVN: r207458
2014-02-04 10:22:23 +00:00
Renlin Li
2687eb3371 * gcc.target/arm/ftest-armv7a-thumb.c: Change aramv7-a to armv7-a.
From-SVN: r207457
2014-02-04 10:05:30 +00:00
Jakub Jelinek
66b3ed5f3d re PR middle-end/59261 (FAIL: gcc.dg/vect/bb-slp-26.c -flto -ffat-lto-objects (internal compiler error))
PR middle-end/59261
	* expmed.c (expand_mult): For MODE_VECTOR_INT multiplication
	if there is no vashl<mode>3 or ashl<mode>3 insn, skip_synth.

	* gcc.dg/pr59261.c: New test.

From-SVN: r207456
2014-02-04 10:36:18 +01:00
Richard Biener
5961d779d0 re PR tree-optimization/60012 (Vectorizer generates unnecessary loop versioning for alias)
2014-02-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/60012
	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Apply
	TBAA disambiguation to all DDRs.

	* gcc.dg/vect/pr60012.c: New testcase.

From-SVN: r207455
2014-02-04 09:34:58 +00:00
Rainer Orth
91da048112 Ensure libgcc_s unwinder is always used on 64-bit Solaris 10+/x86 (PR target/59788)
gcc:
	PR target/59788
	* config/sol2.h (LINK_LIBGCC_MAPFILE_SPEC): Define.
	(LINK_SPEC): Use it for -shared, -shared-libgcc.

	libgcc:
	PR target/59788
	* config/t-slibgcc-sld (libgcc-unwind.map): New target.
	(install-libgcc-unwind-map-forbuild): New target.
	(all): Depend on install-libgcc-unwind-map-forbuild.
	(install-libgcc-unwind-map): New target.
	(install): Depend on install-libgcc-unwind-map.

	gcc/testsuite:
	PR target/59788
	* g++.dg/eh/unwind-direct.C: New test.

	toplevel:
	PR target/59788
	* ltmain.sh (opt_duplicate_compiler_generated_deps): Enable on
	*solaris2*.

From-SVN: r207454
2014-02-04 09:31:38 +00:00
Uros Bizjak
f8e162b710 tsan-dg.exp (tsan_init): Set trivial testcase timeout value to 20s.
* lib/tsan-dg.exp (tsan_init): Set trivial testcase
	timeout value to 20s.

From-SVN: r207453
2014-02-04 10:08:38 +01:00
Jakub Jelinek
5ab39ec3b0 re PR sanitizer/60038 (AddressSanitizer CHECK failed ... "((*tls_addr + *tls_size)) <= ((*stk_addr + *stk_size))" on CentOS 5.10)
PR sanitizer/60038
	* sanitizer_common/sanitizer_linux_libcdep.cc: Include
	sanitizer_atomic.h and unistd.h.
	(kThreadDescriptorSize): Made static, remove initializer and const,
	change type to atomic_uintptr_t.
	(ThreadDescriptorSize): Use confstr(_CS_GNU_LIBC_VERSION, ...) to
	query glibc version, compute kThreadDescriptorSize depending on
	glibc version minor number.
	(GetThreadStackAndTls): Use ThreadDescriptorSize() instead of
	kThreadDescriptorSize directly.

From-SVN: r207452
2014-02-04 08:37:44 +01:00
Jan Hubicka
39960d1cfa re PR ipa/59882 (internal compiler error: Segmentation fault)
PR ipa/59882
	* tree.c (get_binfo_at_offset): Do not get confused by empty classes;
	* g++.dg/torture/pr59882.C: New testcase

From-SVN: r207451
2014-02-04 06:28:22 +00:00
Jan Hubicka
6f746413d4 gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Remove.
* gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Remove.
	* gimple-fold.h (gimple_extract_devirt_binfo_from_cst): Remove.

From-SVN: r207450
2014-02-04 06:04:32 +00:00
Jan Hubicka
5f876ae722 re PR ipa/59469 (LLVM build failure with gcc LTO)
PR ipa/59469
	* lto-symtab.c (lto_cgraph_replace_node, lto_varpool_replace_node):
	merge force_output and forced_by_abi flags.

From-SVN: r207449
2014-02-04 05:50:18 +00:00
Jan Hubicka
5bccb77a77 ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct lookup via vtable pointer...
* ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct
	lookup via vtable pointer; check for type consistency
	and turn inconsitent facts into UNREACHABLE.
	* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
	* gimple-fold.c (gimple_get_virt_method_for_vtable): 
	Do not ICE on type inconsistent querries; return UNREACHABLE
	instead.

	* testsuite/g++.dg/ipa/devirt-25.C: New testcase.

From-SVN: r207448
2014-02-04 05:40:21 +00:00
Jan Hubicka
9de2f554ec ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct lookup via vtable pointer...
* ipa-cp.c (ipa_get_indirect_edge_target_1): Do direct
	lookup via vtable pointer; check for type consistency
	and turn inconsitent facts into UNREACHABLE.
	* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
	* gimple-fold.c (gimple_get_virt_method_for_vtable): 
	Do not ICE on type inconsistent querries; return UNREACHABLE
	instead.

	* g++.dg/ipa/devirt-25.C: New testcase.

From-SVN: r207447
2014-02-04 03:42:37 +00:00
Jakub Jelinek
4b076d8a4d re PR tree-optimization/59924 (uninit memory hog)
PR tree-optimization/59924
	* gcc.dg/pr59924.c: New test.

From-SVN: r207446
2014-02-04 01:46:42 +01:00
GCC Administrator
c7793f06fb Daily bump.
From-SVN: r207445
2014-02-04 00:17:15 +00:00
Richard Henderson
ade3ff242e re PR tree-optimization/59924 (uninit memory hog)
PR tree-opt/59924

        * tree-ssa-uninit.c (push_to_worklist): Don't re-push if we've
        already processed this node.
        (normalize_one_pred_1): Pass along mark_set.
        (normalize_one_pred): Create and destroy a pointer_set_t.
        (normalize_one_pred_chain): Likewise.

From-SVN: r207442
2014-02-03 15:13:08 -08:00
Laurent Alfonsi
55428cc329 re PR gcov-profile/58602 (.gcno files not truncated at gcov_close)
PR gcov-profile/58602
        * gcc/gcov-io.c (gcov_open): Open with truncation when mode<0

From-SVN: r207441
2014-02-03 14:55:36 -07:00
Jan Hubicka
85942f45e9 re PR ipa/59831 (ice in cgraph_speculative_call_info with -O3)
PR ipa/59831
	* g++.dg/ipa/devirt-24.C: New testcase.

	* ipa-cp.c (ipa_get_indirect_edge_target_1): Give up on -fno-devirtualize;
	Try to devirtualize by the knowledge of virtual table pointer given by
	aggregate propagation.
	* ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
	ipa_print_node_jump_functions): Dump also offset that
	is relevant for polymorphic calls.
	(determine_known_aggregate_parts): Add arg_type parameter; use it
	instead of determining the type from pointer type.
	(ipa_compute_jump_functions_for_edge): Update call of
	determine_known_aggregate_parts.
	* gimple-fold.c (gimple_get_virt_method_for_vtable): Break out from ...
	(gimple_get_virt_method_for_binfo): ... here; simplify using
	vtable_pointer_value_to_vtable.
	* gimple-fold.h (gimple_get_virt_method_for_vtable): Declare.
	* ipa-devirt.c (subbinfo_with_vtable_at_offset): Turn OFFSET parameter
	to unsigned HOST_WIDE_INT; Use vtable_pointer_value_to_vtable.
	(vtable_pointer_value_to_vtable): Break out from ...; handle also
	POINTER_PLUS_EXPR.
	(vtable_pointer_value_to_binfo): ... here.
	* ipa-utils.h (vtable_pointer_value_to_vtable): Declare.

From-SVN: r207439
2014-02-03 20:41:30 +00:00
Teresa Johnson
bddc974e71 tree-vect-slp.c (vect_supported_load_permutation_p): Avoid redef of outer loop index variable.
2014-02-03  Teresa Johnson  <tejohnson@google.com>

	* tree-vect-slp.c (vect_supported_load_permutation_p): Avoid
	redef of outer loop index variable.

From-SVN: r207437
2014-02-03 19:12:58 +00:00
Marc Glisse
5d77fb196b re PR c++/53017 (Integer constant expression not constant enough for vector_size)
2014-02-03  Marc Glisse  <marc.glisse@inria.fr>

	PR c++/53017
	PR c++/59211
gcc/c-family/
	* c-common.c (handle_aligned_attribute, handle_alloc_size_attribute,
	handle_vector_size_attribute, handle_nonnull_attribute): Call
	default_conversion on the attribute argument.
	(handle_nonnull_attribute): Increment the argument number.
gcc/cp/
	* tree.c (handle_init_priority_attribute): Call default_conversion on
	the attribute argument.
gcc/
	* doc/extend.texi (Function Attributes): Typo.
gcc/testsuite/
	* c-c++-common/attributes-1.c: New testcase.
	* g++.dg/cpp0x/constexpr-attribute2.C: Likewise.

From-SVN: r207436
2014-02-03 19:07:55 +00:00
Paolo Carlini
f344f52519 re PR c++/58871 ([c++11] ICE with defaulted copy constructor in broken template class hierarchy)
/cp
2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58871
	* method.c (synthesized_method_walk): If vbases is non-null but
	is_empty is true, likewise don't worry about the virtual bases.

/testsuite
2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58871
	* g++.dg/cpp0x/pr58871.C: New.

From-SVN: r207434
2014-02-03 18:22:46 +00:00
Cong Hou
cf5b2be2a4 re PR tree-optimization/60000 (GCC trunk build failure caused by the vectorizer)
2014-02-03  Cong Hou  <congh@google.com>

	PR tree-optimization/60000
	* tree-vect-loop.c (vect_transform_loop): Set pattern_def_seq to NULL
	if the vectorized statement is a store.  A store statement can only
	appear at the end of pattern statements.

2014-02-03  Cong Hou  <congh@google.com>

	PR tree-optimization/60000
	* g++.dg/vect/pr60000.cc: New test.

From-SVN: r207433
2014-02-03 13:15:56 -05:00
Ian Lance Taylor
e3aaedd6bf ltmain.sh: Patch for Solaris.
From Rainer Orth.

From-SVN: r207432
2014-02-03 17:39:44 +00:00
Brooks Moses
37f14a0de5 * gcc_update (files_and_dependencies): Add aarch64-tune.md.
From-SVN: r207429
2014-02-03 09:21:33 -08:00
H.J. Lu
a2a1ddb57a Add -mlong-double-128 and make it default for 64-bit Bionic
gcc/

	* config/i386/i386.c (flag_opts): Add -mlong-double-128.
	(ix86_option_override_internal): Default long double to 64-bit for
	32-bit Bionic and to 128-bit for 64-bit Bionic.

	* config/i386/i386.h (LONG_DOUBLE_TYPE_SIZE): Use 128 if
	TARGET_LONG_DOUBLE_128 is true.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.

	* config/i386/i386.opt (mlong-double-80): Negate -mlong-double-64.
	(mlong-double-64): Negate -mlong-double-128.
	(mlong-double-128): New option.

	* config/i386/i386-c.c (ix86_target_macros): Define
	__LONG_DOUBLE_128__ for TARGET_LONG_DOUBLE_128.

	* doc/invoke.texi: Document -mlong-double-128.

gcc/testsuite/

	* gcc.target/i386/long-double-64-1.c: Verify __multf3 isn't used.
	* gcc.target/i386/long-double-64-4.c: Likewise.
	* gcc.target/i386/long-double-80-1.c: Likewise.
	* gcc.target/i386/long-double-80-2.c: Likewise.
	* gcc.target/i386/long-double-80-3.c: Likewise.
	* gcc.target/i386/long-double-80-4.c: Likewise.
	* gcc.target/i386/long-double-80-5.c: Likewise.
	* gcc.target/i386/long-double-64-2.c: Limit to ia32.  Verify
	__multf3 isn't used.
	* gcc.target/i386/long-double-64-3.c: Likewise.
	* gcc.target/i386/long-double-128-1.c: New test.
	* gcc.target/i386/long-double-128-2.c: Likewise.
	* gcc.target/i386/long-double-128-3.c: Likewise.
	* gcc.target/i386/long-double-128-4.c: Likewise.
	* gcc.target/i386/long-double-128-5.c: Likewise.
	* gcc.target/i386/long-double-128-6.c: Likewise.
	* gcc.target/i386/long-double-128-7.c: Likewise.
	* gcc.target/i386/long-double-128-8.c: Likewise.
	* gcc.target/i386/long-double-128-9.c: Likewise.
	* gcc.target/i386/long-double-64-5.c: Likewise.
	* gcc.target/i386/long-double-64-6.c: Likewise.
	* gcc.target/i386/long-double-64-7.c: Likewise.
	* gcc.target/i386/long-double-64-8.c: Likewise.
	* gcc.target/i386/long-double-64-9.c: Likewise.
	* gcc.target/i386/long-double-80-10.c: Likewise.
	* gcc.target/i386/long-double-80-8.c: Likewise.
	* gcc.target/i386/long-double-80-9.c: Likewise.

From-SVN: r207428
2014-02-03 07:18:44 -08:00
H.J. Lu
f742cf901d Check if mode is OK first
PR rtl-optimization/60024
	* sel-sched.c (init_regs_for_mode): Check if mode is OK first.

From-SVN: r207427
2014-02-03 07:06:31 -08:00
Markus Trippelsdorf
8f36fd3017 invoke.texi: (fprofile-reorder-functions): Fix typo.
2014-02-03  Markus Trippelsdorf  <markus@trippelsdorf.de>

	* doc/invoke.texi: (fprofile-reorder-functions): Fix typo.

From-SVN: r207423
2014-02-03 13:01:56 +00:00
Andrey Belevantsev
cbb436643a Actually add the test case from the previous commit.
From-SVN: r207422
2014-02-03 16:04:33 +04:00
Andrey Belevantsev
861ec4f37e re PR rtl-optimization/57662 (ICE: SIGSEGV in code_motion_process_successors with -fschedule-insns2 -fselective-scheduling2)
gcc/
	PR rtl-optimization/57662
	* sel-sched.c (code_motion_path_driver): Do not mark already not
	existing blocks in the visiting bitmap.

testsuite/
	PR rtl-optimization/57662
	* g++.dg/pr57662.C: New test.

From-SVN: r207421
2014-02-03 16:00:23 +04:00
Andrey Belevantsev
fe08255d59 sel-sched-ir.c (sel_gen_insn_from_expr_after): Reset INSN_DELETED_P on the insn being emitted.
* sel-sched-ir.c (sel_gen_insn_from_expr_after): Reset INSN_DELETED_P
        on the insn being emitted.

From-SVN: r207420
2014-02-03 15:56:56 +04:00
James Greenhalgh
96d3a240d3 [Documentation] Remove documentation of gimple_asm_clear_volatile
2014-02-03  James Greenhalgh  <james.greenhalgh@arm.com>
	    Will Deacon  <will.deacon@arm.com>

	* doc/gimple.texi (gimple_asm_clear_volatile): Remove.


Co-Authored-By: Will Deacon <will.deacon@arm.com>

From-SVN: r207419
2014-02-03 11:51:40 +00:00
Kyrylo Tkachov
9dd6c9f79f * config/arm/arm-tables.opt: Regenerate.
From-SVN: r207418
2014-02-03 11:30:36 +00:00
Bill Schmidt
60331d000d rs6000.c (altivec_expand_vec_perm_le): Generalize for vector types other than V16QImode.
gcc:

2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (altivec_expand_vec_perm_le): Generalize
	for vector types other than V16QImode.
	* config/rs6000/altivec.md (altivec_vperm_<mode>): Change to a
	define_expand, and call altivec_expand_vec_perm_le when producing
	code with little endian element order.
	(*altivec_vperm_<mode>_internal): New insn having previous
	behavior of altivec_vperm_<mode>.
	(altivec_vperm_<mode>_uns): Change to a define_expand, and call
	altivec_expand_vec_perm_le when producing code with little endian
	element order.
	(*altivec_vperm_<mode>_uns_internal): New insn having previous
	behavior of altivec_vperm_<mode>_uns.

gcc/testsuite:

2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.dg/vmx/3b-15.c: Remove special handling for little endian.
	* gcc.dg/vmx/perm.c: New.
	* gcc.dg/vmx/perm-be-order.c: New.

From-SVN: r207415
2014-02-03 01:26:34 +00:00
Bill Schmidt
b80afde960 altivec.md (UNSPEC_VSUMSWS_DIRECT): New unspec.
gcc:

2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/altivec.md (UNSPEC_VSUMSWS_DIRECT): New unspec.
	(altivec_vsumsws): Add handling for -maltivec=be with a little
	endian target.
	(altivec_vsumsws_direct): New.
	(reduc_splus_<mode>): Call gen_altivec_vsumsws_direct instead of
	gen_altivec_vsumsws.

gcc/testsuite:

2014-02-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.dg/vmx/vsums.c: New.
	* gcc.dg/vmx/vsums-be-order.c: New.

From-SVN: r207414
2014-02-03 01:24:31 +00:00
Jan Hubicka
390675c87d ipa-devirt.c (subbinfo_with_vtable_at_offset, [...]): New functions.
* ipa-devirt.c (subbinfo_with_vtable_at_offset,
	vtable_pointer_value_to_binfo): New functions.
	* ipa-utils.h (vtable_pointer_value_to_binfo): Declare.
	* ipa-prop.c (extr_type_from_vtbl_ptr_store): Use it.
	* g++.dg/ipa/devirt-23.C: New testcase.
	* g++.dg/ipa/devirt-20.C: Fix template.

From-SVN: r207413
2014-02-03 00:24:52 +00:00
GCC Administrator
06fcf6c19c Daily bump.
From-SVN: r207412
2014-02-03 00:17:12 +00:00
Sandra Loosemore
02b677311e nios2.md (load_got_register): Initialize GOT pointer from _gp_got instead of _GLOBAL_OFFSET_TABLE_.
2014-02-02  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/nios2.md (load_got_register): Initialize GOT
	pointer from _gp_got instead of _GLOBAL_OFFSET_TABLE_.
	* config/nios2/nios2.c (nios2_function_profiler): Likewise.

	libgcc/
	* config/nios2/crti.S (_init): Initialize GOT pointer from
	_gp_got instead of _GLOBAL_OFFSET_TABLE_.

From-SVN: r207409
2014-02-02 17:12:17 -05:00
Fabien Chêne
1c50676a20 re PR c++/37140 (type inherited from base class not recognized)
2014-02-02  Fabien Chene  <fabien@gcc.gnu.org>
        PR c++/37140
        * parser.c (cp_parser_nonclass_name): Call strip_using_decl and
	move the code handling dependent USING_DECLs...
        * name-lookup.c (strip_using_decl): ...Here.

2014-02-02  Fabien Chene  <fabien@gcc.gnu.org>

        PR c++/37140
        * g++.dg/template/using27.C: New.
	* g++.dg/template/using28.C: New.
	* g++.dg/template/using29.C: New.

From-SVN: r207408
2014-02-02 21:02:37 +01:00
Fabien Chêne
7f82286eb6 re PR c++/37140 (type inherited from base class not recognized)
2014-02-02  Fabien Chene  <fabien@gcc.gnu.org>
        PR c++/37140
        * parser.c (cp_parser_nonclass_name): Call strip_using_decl and
	move the code handling dependent USING_DECLs...
        * name-lookup.c (strip_using_decl): ...Here.

2014-02-02  Fabien Chene  <fabien@gcc.gnu.org>

        PR c++/37140
        * g++.dg/template/using27.C: New.
	* g++.dg/template/using28.C: New.
	* g++.dg/template/using29.C: New.

From-SVN: r207407
2014-02-02 20:58:06 +01:00
Jan Hubicka
2ace77c21a ipa-prop.c (update_jump_functions_after_inlining): When type is not preserverd by passthrough, do not propagate the type.
* ipa-prop.c (update_jump_functions_after_inlining): When type is not
	preserverd by passthrough, do not propagate the type.
	* g++.dg/ipa/devirt-23.C: New testcase.

From-SVN: r207405
2014-02-02 18:56:33 +00:00
Joseph Myers
e738433e45 gcc.pot: Regenerate.
gcc/po:
	* gcc.pot: Regenerate.

libcpp/po:
	* cpplib.pot: Regenerate.

From-SVN: r207404
2014-02-02 17:40:13 +00:00
Richard Sandiford
1ea0a6515f configure.ac: Check __mips64 when setting host_address.
libgcc/
	* configure.ac: Check __mips64 when setting host_address.
	* configure: Regenerate.
	* config.host (mips*-*-*): Add t-softfp-sfdf, mips/t-softfp-tf,
	mips/t-mips64 and t-softfp.
	(mips*-*-linux*): Don't add mips/t-tpbit.
	* config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS, FPBIT, FPBIT_CFLAGS)
	(DPBIT, DPBIT_CFLAGS): Delete.
	* config/mips/sfp-machine.h: New file.
	* config/mips/t-mips64: Likewise.
	* config/mips/t-softfp-tf: Likewise.
	* config/mips/t-tpbit: Delete.

From-SVN: r207403
2014-02-02 16:17:15 +00:00
Richard Sandiford
70b2d364cc mips.c (MIPS_GET_FCSR, [...]): New macros.
gcc/
	* config/mips/mips.c (MIPS_GET_FCSR, MIPS_SET_FCSR): New macros.
	(mips_atomic_assign_expand_fenv): New function.
	(TARGET_ATOMIC_ASSIGN_EXPAND_FENV): Define.

From-SVN: r207402
2014-02-02 16:10:12 +00:00
Richard Sandiford
a90c02456f extend.texi (__builtin_mips_get_fcsr): Document.
gcc/
	* doc/extend.texi (__builtin_mips_get_fcsr): Document.
	(__builtin_mips_set_fcsr): Likewise.
	* config/mips/mips-ftypes.def: Add MIPS_VOID_FTYPE_USI and
	MIPS_USI_FTYPE_VOID.
	* config/mips/mips-protos.h (mips16_expand_get_fcsr): Declare
	(mips16_expand_set_fcsr): Likewise.
	* config/mips/mips.c (mips16_get_fcsr_stub): New variable.
	(mips16_set_fcsr_stub): Likewise.
	(mips16_get_fcsr_one_only_stub): New class.
	(mips16_set_fcsr_one_only_stub): Likewise.
	(mips16_expand_get_fcsr, mips16_expand_set_fcsr): New functions.
	(mips_code_end): Output the get_fcsr and set_fcsr stubs, if needed.
	(BUILTIN_AVAIL_MIPS16, AVAIL_ALL): New macros.
	(hard_float): New availability predicate.
	(mips_builtins): Add get_fcsr and set_fcsr.
	(mips_expand_builtin): Check BUILTIN_AVAIL_MIPS16.
	* config/mips/mips.md (UNSPEC_GET_FCSR, UNSPEC_SET_FCSR): New unspecs.
	(GET_FCSR_REGNUM, SET_FCSR_REGNUM): New constants.
	(mips_get_fcsr, *mips_get_fcsr, mips_get_fcsr_mips16_<mode>)
	(mips_set_fcsr, *mips_set_fcsr, mips_set_fcsr_mips16_<mode>): New
	patterns.

gcc/testsuite/
	* gcc.target/mips/get-fcsr-1.c, gcc.target/mips/get-fcsr-2.c,
	gcc.target/mips/set-fcsr-1.c, gcc.target/mips/set-fcsr-2.c: New tests.

From-SVN: r207401
2014-02-02 16:05:09 +00:00
Richard Sandiford
6d51cc9010 mips.c (mips_one_only_stub): New class.
gcc/
	* config/mips/mips.c (mips_one_only_stub): New class.
	(mips_need_mips16_rdhwr_p): Replace with...
	(mips16_rdhwr_stub): ...this new variable.
	(mips16_stub_call_address): New function.
	(mips16_rdhwr_one_only_stub): New class.
	(mips_expand_thread_pointer): Use mips16_stub_call_address.
	(mips_output_mips16_rdhwr): Delete.
	(mips_finish_stub): New function.
	(mips_code_end): Use it to handle rdhwr stubs.

From-SVN: r207400
2014-02-02 15:58:38 +00:00
Uros Bizjak
6c90f13715 re PR target/60017 (Struct not returned correctly)
PR target/60017
	* config/i386/i386.c (classify_argument): Fix handling of bit_offset
	when calculating size of integer atomic types.

testsuite/ChangeLog:

	PR target/60017
	* gcc.c-torture/execute/pr60017.c: New test.

From-SVN: r207399
2014-02-02 16:35:53 +01:00