135375 Commits

Author SHA1 Message Date
Matthew Fortune
82f84ecbb4 MIPS32R6 and MIPS64R6 support
gcc/

	* config.gcc: Add mipsisa64r6 and mipsisa32r6 cpu support.
	* config/mips/constraints.md (ZD): Add r6 restrictions.
	* config/mips/gnu-user.h (DRIVER_SELF_SPECS): Add MIPS_ISA_LEVEL_SPEC.
	* config/mips/loongson.md
	(<u>div<mode>3, <u>mod<mode>3): Move to mips.md.
	* config/mips/mips-cpus.def (mips32r6, mips64r6): Define.
	* config/mips/mips-modes.def (CCF): New mode.
	* config/mips/mips-protos.h
	(mips_9bit_offset_address_p): New prototype.
	* config/mips/mips-tables.opt: Regenerate.
	* config/mips/mips.c (MIPS_JR): Use JALR $, <reg> for R6.
	(mips_rtx_cost_data): Add pseudo-processors W32 and W64.
	(mips_9bit_offset_address_p): New function.
	(mips_rtx_costs): Account for R6 multiply and FMA instructions.
	(mips_emit_compare): Implement R6 FPU comparisons.
	(mips_expand_conditional_move): Implement R6 selects.
	(mips_expand_conditional_trap): Account for removed trap immediate.
	(mips_expand_block_move): Disable inline move when LWL/LWR are removed.
	(mips_print_float_branch_condition): Update for R6 FPU branches.
	(mips_print_operand): Handle CCF mode compares.
	(mips_interrupt_extra_call_saved_reg_p): Do not attempt to callee-save
	MD_REGS for R6.
	(mips_hard_regno_mode_ok_p): Support CCF mode.
	(mips_mode_ok_for_mov_fmt_p): Likewise.
	(mips_secondary_reload_class): CCFmode can be loaded directly.
	(mips_set_fast_mult_zero_zero_p): Account for R6 multiply instructions.
	(mips_option_override): Ensure R6 is used with fp64.  Set default
	mips_nan modes.  Check for mips_nan support.  Prevent DSP with R6.
	(mips_conditional_register_usage): Disable MD_REGS for R6. Disable
	FPSW for R6.
	(mips_mulsidi3_gen_fn): Support R6 multiply instructions.
	* config/mips/mips.h (ISA_MIPS32R6, ISA_MIPS64R6): Define.
	(TARGET_CPU_CPP_BUILTINS): Rework for mips32/mips64.
	(ISA_HAS_JR): New macro.
	(ISA_HAS_HILO): New macro.
	(ISA_HAS_R6MUL): Likewise.
	(ISA_HAS_R6DMUL): Likewise.
	(ISA_HAS_R6DIV): Likewise.
	(ISA_HAS_R6DDIV): Likewise.
	(ISA_HAS_CCF): Likewise.
	(ISA_HAS_SEL): Likewise.
	(ISA_HAS_COND_TRAPI): Likewise.
	(ISA_HAS_FP_MADDF_MSUBF): Likewise.
	(ISA_HAS_LWL_LWR): Likewise.
	(ISA_HAS_IEEE_754_LEGACY): Likewise.
	(ISA_HAS_IEEE_754_2008): Likewise.
	(ISA_HAS_PREFETCH_9BIT): Likewise.
	(MIPSR6_9BIT_OFFSET_P): New macro.
	(BASE_DRIVER_SELF_SPECS): Use MIPS_ISA_DRIVER_SELF_SPECS.
	(DRIVER_SELF_SPECS): Use MIPS_ISA_LEVEL_SPEC.
	(MULTILIB_ISA_DEFAULT): Handle mips32r6 and mips64r6.
	(MIPS_ISA_LEVEL_SPEC): Likewise.
	(MIPS_ISA_SYNCI_SPEC): Likewise.
	(ISA_HAS_64BIT_REGS): Likewise.
	(ISA_HAS_BRANCHLIKELY): Likewise.
	(ISA_HAS_MUL3): Likewise.
	(ISA_HAS_DMULT): Likewise.
	(ISA_HAS_DDIV): Likewise.
	(ISA_HAS_DIV): Likewise.
	(ISA_HAS_MULT): Likewise.
	(ISA_HAS_FP_CONDMOVE): Likewise.
	(ISA_HAS_8CC): Likewise.
	(ISA_HAS_FP4): Likewise.
	(ISA_HAS_PAIRED_SINGLE): Likewise.
	(ISA_HAS_MADD_MSUB): Likewise.
	(ISA_HAS_FP_RECIP_RSQRT): Likewise.
	* config/mips/mips.md (processor): Add w32 and w64.
	(FPCC): New mode iterator.
	(reg): Add CCF mode.
	(fpcmp): New mode attribute.
	(fcond): Add ordered, ltgt and ne codes.
	(fcond): Update code attribute.
	(sel): New code attribute.
	(selinv): Likewise.
	(ctrap<mode>4): Update condition.
	(*conditional_trap_reg<mode>): New define_insn.
	(*conditional_trap<mode>): Update condition.
	(mul<mode>3): Expand R6 multiply instructions.
	(<su>mulsi3_highpart): Likewise.
	(<su>muldi3_highpart): Likewise.
	(mul<mode>3_mul3_loongson): Rename...
	(mul<mode>3_mul3_hilo): To this.  Add R6 mul instruction.
	(<u>mulsidi3_32bit_r6): New expander.
	(<u>mulsidi3_32bit): Restrict to pre-r6 multiplies.
	(<u>mulsidi3_32bit_r4000): Likewise.
	(<u>mulsidi3_64bit): Likewise.
	(<su>mulsi3_highpart_internal): Likewise.
	(mulsidi3_64bit_r6dmul): New instruction.
	(<su>mulsi3_highpart_r6): Likewise.
	(<su>muldi3_highpart_r6): Likewise.
	(fma<mode>4): Likewise.
	(movccf): Likewise.
	(*sel<code><GPR:mode>_using_<GPR2:mode>): Likewise.
	(*sel<mode>): Likewise.
	(<u>div<mode>3): Moved from loongson.md.  Add R6 instructions.
	(<u>mod<mode>3): Likewise.
	(extvmisalign<mode>): Require ISA_HAS_LWL_LWR.
	(extzvmisalign<mode>): Likewise.
	(insvmisalign<mode>): Likewise.
	(mips_cache): Account for R6 displacement field sizes.
	(*branch_fp): Rename...
	(*branch_fp_<mode>): To this.  Add CCFmode support.
	(*branch_fp_inverted): Rename...
	(*branch_fp_inverted_<mode>): To this.  Add CCFmode support.
	(s<code>_<mode>): Rename...
	(s<code>_<SCALARF:mode>_using_<FPCC:mode>): To this.  Add FCCmode
	condition support.
	(s<code>_<mode> swapped): Rename...
	(s<code>_<SCALARF:mode>_using_<FPCC:mode> swapped): To this. Add
	CCFmode condition support.
	(mov<mode>cc GPR): Expand R6 selects.
	(mov<mode>cc FPR): Expand R6 selects.
	(*tls_get_tp_<mode>_split): Do not .set push for >= mips32r2.
	* config/mips/netbsd.h (TARGET_CPU_CPP_BUILTINS): Update similarly to
	mips.h.
	(ASM_SPEC): Add mips32r6, mips64r6.
	* config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Update
	for mips32r6/mips64r6.
	* doc/invoke.texi: Document -mips32r6,-mips64r6.
	* doc/md.texi: Update comment for ZD constraint.

libgcc/

	* config.host: Support mipsisa32r6 and mipsisa64r6.
	* config/mips/mips16.S: Do not build for R6.

gcc/testsuite/

	* gcc.dg/torture/mips-hilo-2.c: Unconditionally pass for R6 onwards.
	* gcc.dg/torture/pr19683-1.c: Likewise.
	* gcc.target/mips/branch-cost-2.c: Require MOVN.
	* gcc.target/mips/movcc-1.c: Likewise.
	* gcc.target/mips/movcc-2.c: Likewise.
	* gcc.target/mips/movcc-3.c: Likewise.
	* gcc.target/mips/call-saved-4.c: Require LDC.
	* gcc.target/mips/dmult-1.c: Require R5 or earlier.
	* gcc.target/mips/fpcmp-1.c: Likewise.
	* gcc.target/mips/fpcmp-2.c: Likewise.
	* gcc.target/mips/neg-abs-2.c: Likewise.
	* gcc.target/mips/timode-1.c: Likewise.
	* gcc.target/mips/unaligned-1.c: Likewise.
	* gcc.target/mips/madd-3.c: Require MADD.
	* gcc.target/mips/madd-9.c: Likewise.
	* gcc.target/mips/maddu-3.c: Likewise.
	* gcc.target/mips/msub-3.c: Likewise.
	* gcc.target/mips/msubu-3.c: Likewise.
	* gcc.target/mips/mult-1.c: Require INS and not DMUL.
	* gcc.target/mips/mips-ps-type-2.c: Require MADD.PS.
	* gcc.target/mips/mips.exp (mips_option_groups): Add ins, dmul, ldc,
	movn, madd, maddps.
	(mips-dg-options): INS available from R2.  LDC available from MIPS II,
	DMUL is present in octeon.  Describe all features removed from R6.

Co-Authored-By: Steve Ellcey <sellcey@imgtec.com>

From-SVN: r218973
2014-12-19 20:17:36 +00:00
David Malcolm
5afd44e33b Fix issue with string options and nested gcc_jit_contexts
gcc/jit/ChangeLog:
	* jit-recording.c (gcc::jit::recording::context::context): When
	copying string options from a parent context, take a copy of the
	underlying buffers, rather than simply copying the pointer.

From-SVN: r218972
2014-12-19 20:11:16 +00:00
Segher Boessenkool
3eb239f48b re PR target/64268 (bootstrap failure (ICE in wide_int_to_tree, at tree.c:1438) on powerpc in libgcc, stage2)
PR target/64268
	* combine.c (try_combine): Immediately return if any of I0,I1,I2
	are the same insn.

From-SVN: r218971
2014-12-19 20:55:32 +01:00
David Malcolm
1f0858d762 Handle NULL in gcc_jit_context_set_str_option
gcc/jit/ChangeLog:
	* jit-recording.c (gcc::jit::recording::context::set_str_option):
	Handle NULL.

From-SVN: r218969
2014-12-19 19:33:29 +00:00
Janus Weil
375550c647 re PR fortran/64209 ([OOP] runtime segfault with CLASS(*), INTENT(OUT) dummy argument)
2014-12-19  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/64209
	* trans-expr.c (gfc_trans_class_array_init_assign): Check if _def_init
	component is non-NULL.
	(gfc_trans_class_init_assign): Ditto.

2014-12-19  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/64209
	* gfortran.dg/unlimited_polymorphic_19.f90: New.

From-SVN: r218968
2014-12-19 20:28:57 +01:00
Jonathan Wakely
34a2b7558b New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
	(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
	* configure.ac: Use new macros.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
	* include/Makefile.in: Regenerate.
	* config/abi/pre/gnu.ver: Export symbols related to new std::string.
	Tighten old patterns to not match new symbols.
	* config/locale/generic/monetary_members.cc: Guard some definitions
	to not compile with new ABI.
	* config/locale/gnu/monetary_members.cc: Likewise.
	* config/locale/gnu/numeric_members.cc: Prevent double-free.
	* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
	exports. Tighten old patterns.
	* doc/xml/manual/configure.xml: Document new configure options.
	* doc/html/*: Regenerate.
	* include/bits/basic_string.h (__cxx11::basic_string): Define new
	non-reference-counted implementation in inline namespace __cxx11.
	(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
	inline namespace.
	(literals::string_literals::operator"): Conditionally use abi-tag.
	* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
	* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
	LDBL_CXX11_ABI namespace macros.
	* include/bits/locale_classes.h (locale::name()): Use abi_tag when
	new ABI is in use.
	(locale::_S_twinned_facets): New static member.
	(locale::facet::__shim): Declare new type.
	(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
	functions for creating shims.
	(locale::_Impl::_M_facet_unchecked): New member function for use
	during construction.
	(locale::_Impl::_M_init_extra): New member functions to create second
	version of some facets.
	(collate, collate_byname): Use abi_tag when new ABI is in use.
	* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
	(numpunct, numpunct_byname): Use __cxx11 namespace.
	(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
	when new ABI is in use.
	(num_get::__do_get, num_put::__do_put): Do not declare long double
	compat functions for new ABI.
	* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
	definitions.
	(numpunct, numpunct_byname): Qualify explicit instantiations.
	* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
	moneypunct, moneypunct_byname, money_get, money_put, messages,
	messages_byname): Use new inline namespace macros.
	(money_get::__do_get, money_put::__do_put): Do not declare long
	double compat functions for new ABI.
	* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
	new namespace macros.
	(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
	* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
	collate_byname, time_get, time_get_byname, moneypunct,
	moneypunct_byname, money_get, money_put, messages, messages_byname):
	Use new namespace macros.
	* include/bits/regex.h: Use inline namespace macros.
	* include/bits/stl_list.h (_List_base, list): Use inline namespace
	instead of abi-tag.
	* include/bits/stringfwd.h (basic_string): Use namespace macros.
	* include/std/iosfwd (basic_stringbuf, basic_istringstream,
	basic_ostringstream, basic_stringstream): Likewise.
	* include/std/sstream: Likewise.
	(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
	* include/std/stdexcept (__cow_string, __sso_string): New types for
	indirectly using std::string with either ABI.
	(logic_error, runtime_error): Replace std::string member with
	__cow_string when new ABI is in use. Declare non-inline copy
	constructor and assignment operator. Declare const char* constructors.
	(domain_error, invalid_argument, length_error, out_of_range,
	range_error, overflow_error, underflow_error): Declare const char*
	constructors.
	* include/std/system_error (error_category): Replace with new
	definition in inline namespace _V2.
	(error_code::message, error_condition::message): Use abi_tag on
	functions returning std::string.
	* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
	* src/c++11/Makefile.am: Add new files.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
	Define old error_category symbols.
	* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
	using old std::string ABI.
	* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
	* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
	* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
	std::string ABI.
	* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
	operators.
	(__cow_string, error_category::_M_message): Define.
	* src/c++11/cow-string-inst.cc: Explicit instantiations using old
	std::string. Include src/c++98/istream-string.cc.
	* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
	std::wstring.
	* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
	string.
	* src/c++11/cxx11-ios_failure.cc: Add sanity check.
	* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
	std::string.
	* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
	* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
	std::string.
	* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
	new std::wstring.
	* src/c++11/fstream-inst.cc: Compile with new ABI.
	* src/c++11/functexcept.cc: Compile with old ABI.
	* src/c++11/random.cc: Compile with new ABI.
	* src/c++11/sstream-inst.cc: Compile with new ABI.
	* src/c++11/string-inst.cc: Explicit instantiations for new string.
	* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
	Define.
	* src/c++11/wstring-inst.cc: Compile with new ABI.
	* src/c++98/Makefile.am: Compile some host files twice for old and
	new std::string. Add new files.
	* src/c++98/Makefile.in: Regenerate.
	* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
	* src/c++98/compatibility.cc: Likewise.
	* src/c++98/concept-inst.cc: Likewise.
	* src/c++98/hash_tr1.cc: Likewise.
	* src/c++98/istream-string.cc: New file defining functions that
	work with istream and std::string moved from ...
	* src/c++98/istream.cc: ... here.
	* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
	old ABI.
	* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
	either ABI.
	* src/c++98/locale.cc (locale::_M_install_facet,
	locale::_M_install_cache): Handle twinned facets.
	* src/c++98/locale-facets.cc: Compile with old std::string ABI.
	(__verify_grouping): Define new overload and old std::string version.
	* src/c++98/locale_init.cc: Initialize twinned facets.
	* src/c++98/localename.cc: Likewise.
	* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
	(__verify_grouping): Define new std::string version.
	* src/c++98/stdexcept.cc: Compile with old std::string ABI.
	* src/c++98/wlocale-inst.cc: Likewise.
	* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
	* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
	Likewise.
	* testsuite/21_strings/headers/string/synopsis.cc: Use inline
	namespace macros.
	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
	correct exception type can be caught.
	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
	* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
	* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
	* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
	* testsuite/util/exception/safety.h: Adjust member function types
	for new std::string.
	* testsuite/util/testsuite_abi.cc: Add new version and ignore
	__float128 symbols in __cxx11 namespace.

From-SVN: r218964
2014-12-19 18:16:39 +00:00
Paolo Carlini
5dcfa0b651 2014-12-19 Paolo Carlini <paolo.carlini@oracle.com>
* Tweak ChangeLog.

From-SVN: r218963
2014-12-19 18:16:00 +00:00
Kai Tietz
3aae939d9b using30.C: Move ...
* g++.dg/template/using30.C: Move ...
        * g++.dg/cpp0x/alias-decl-45.C: ... here.

From-SVN: r218962
2014-12-19 19:03:20 +01:00
Alan Lawrence
84be603271 [AArch64 3/3] Fix XOR_one_cmpl pattern; add SIMD-reg variants for BIC,ORN,EON
gcc/:

	* config/aarch64/aarch64.c (<LOGICAL:optab>_one_cmpl<mode>3):
	Reparameterize to...
	(<NLOGICAL:optab>_one_cmpl<mode>3): with extra SIMD-register variant.
	(xor_one_cmpl<mode>3): New define_insn_and_split.

	* config/aarch64/iterators.md (NLOGICAL): New define_code_iterator.

gcc/testsuite/:

	* gcc.target/aarch64/eon_1.c: New test.

From-SVN: r218961
2014-12-19 17:59:23 +00:00
Alan Lawrence
fe82d1f27e [AArch64 2/3] Add SIMD-reg variants of logical operators and/ior/xor/not
* config/aarch64/aarch64.md (<optab><mode>3, one_cmpl<mode>2):
	Add SIMD-register variant.
	* config/aarch64/iterators.md (Vbtype): Add value for SI.

From-SVN: r218960
2014-12-19 17:48:15 +00:00
Paolo Carlini
f1f1391ce0 using30.C: Move...
2014-12-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/template/using30.C: Move...
	* g++.dg/cpp0x/alias-decl-45.C: ... here.

From-SVN: r218959
2014-12-19 17:47:58 +00:00
Alan Lawrence
4f2962fd47 [AArch64 1/3] Don't disparage add/sub in SIMD registers
* config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize 
        SIMD reg variant.

From-SVN: r218958
2014-12-19 17:44:36 +00:00
Paolo Carlini
fc2770b996 re PR c++/60493 (g++ throws segmentation fault on simple code)
2014-12-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60493
	* g++.dg/template/crash120.C: New.

From-SVN: r218957
2014-12-19 16:50:31 +00:00
Kai Tietz
d427aa2e04 re PR c++/61198 (Crash when selecting specializations through aliases.)
PR c++/61198
	* g++.dg/template/using30.C: New file.

From-SVN: r218956
2014-12-19 17:47:59 +01:00
Kai Tietz
b00f4f15c1 re PR c++/61198 (Crash when selecting specializations through aliases.)
PR c++/61198
	* pt.c (most_general_template): Don't break for template-alias.

From-SVN: r218955
2014-12-19 17:44:15 +01:00
Ian Lance Taylor
16f72d88dd compiler: More cases that need a temporary for interface conversion.
From-SVN: r218952
2014-12-19 16:14:01 +00:00
Martin Liska
6b0e0695a5 re PR ipa/63569 (Wrong code with volatile and ICF)
Fix for PR ipa/63569.

	PR ipa/63569
	* gcc.dg/ipa/pr63569.c: New test.
	PR ipa/63569
	* ipa-icf-gimple.c (func_checker::compare_operand): Add missing
	comparison for volatile flag.

From-SVN: r218949
2014-12-19 12:40:50 +00:00
Jakub Jelinek
1f8d3e84ee re PR preprocessor/63831 (r217292 causes segfaults with -MM)
PR preprocessor/63831
	* c-cppbuiltin.c (c_cpp_builtins): Don't define __has_attribute
	and __has_cpp_attribute here.
	* c-ppoutput.c (init_pp_output): Set cb->has_attribute to
	c_common_has_attribute.
	* c-common.h (c_common_has_attribute): New prototype.
	* c-lex.c (init_c_lex): Set cb->has_attribute to
	c_common_has_attribute instead of cb_has_attribute.
	(get_token_no_padding): New function.
	(cb_has_attribute): Renamed to ...
	(c_common_has_attribute): ... this.  No longer static.  Use
	get_token_no_padding, require ()s, don't build TREE_LIST
	unnecessarily, fix up formatting, adjust diagnostics, call
	init_attributes.

	* directives.c (lex_macro_node): Remove __has_attribute__ handling.
	* internal.h (struct spec_node): Remove n__has_attribute__ field.
	(struct lexer_state): Remove in__has_attribute__ field.
	* macro.c (_cpp_builtin_macro_text): Handle BT_HAS_ATTRIBUTE.
	* identifiers.c (_cpp_init_hashtable): Remove __has_attribute__
	handling.
	* init.c (builtin_array): Add __has_attribute and __has_cpp_attribute.
	(cpp_init_special_builtins): Don't initialize __has_attribute
	or __has_cpp_attribute if CLK_ASM or pfile->cb.has_attribute is NULL.
	* traditional.c (enum ls): Remove ls_has_attribute,
	ls_has_attribute_close.
	(_cpp_scan_out_logical_line): Remove __has_attribute__ handling.
	* include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_ATTRIBUTE.
	* pch.c (cpp_read_state): Remove __has_attribute__ handling.
	* expr.c (eval_token): Likewise.
	(parse_has_attribute): Removed.

	* c-c++-common/cpp/pr63831-1.c: New test.
	* c-c++-common/cpp/pr63831-2.c: New test.

From-SVN: r218948
2014-12-19 13:20:58 +01:00
Kyrylo Tkachov
8a386c9113 [ARM][doc] Remove mention of Advanced RISC Machines
* doc/invoke.texi (ARM options): Remove mention of Advanced RISC
	Machines.

From-SVN: r218897
2014-12-19 10:20:07 +00:00
James Greenhalgh
827785ddf6 Fix ChangeLog typo in 218895
From-SVN: r218896
2014-12-19 09:41:13 +00:00
Xingxing Pan
85e18759e7 [PATCH][ARM] Fix reservation pattern in cortex-a9-neon.md
gcc/

	* config/arm/cortex-a9-neon.md (cortex_a9_neon_vmov): Change
	reservation to cortex_a9_neon_dp.

From-SVN: r218895
2014-12-19 09:39:55 +00:00
Kaz Kojima
1e3e92b513 * [SH] Split QI/HImode load/store via r0 when LRA is enabled.
From-SVN: r218892
2014-12-19 04:56:26 +00:00
Kaz Kojima
74bd0da1fd * [SH] Add splitter to addsi3_compact.
From-SVN: r218891
2014-12-19 04:53:57 +00:00
Kaz Kojima
6efc6b7f05 * [SH] Modify movsi_ie and movsf_ie patterns for LRA.
From-SVN: r218890
2014-12-19 04:51:53 +00:00
Kaz Kojima
fc1fcfa0b6 * [SH] Miscellaneous changes for LRA.
From-SVN: r218889
2014-12-19 04:49:16 +00:00
Kaz Kojima
106a52b7bf * [SH] Add -mlra option.
From-SVN: r218888
2014-12-19 04:47:18 +00:00
Kaz Kojima
14133a4d8a * Add TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT target macro.
From-SVN: r218887
2014-12-19 04:43:11 +00:00
Kaz Kojima
d6220b11a7 * Add TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV target macro.
From-SVN: r218886
2014-12-19 04:40:11 +00:00
Kaz Kojima
70712859a1 lra-constraints.c (process_address_1): Swap base_term and index_term if INDEX_REG_CLASS is assigned to base_term...
* lra-constraints.c (process_address_1): Swap base_term and index_term
  if INDEX_REG_CLASS is assigned to base_term already when INDEX_REG_CLASS
  is a single register class.

From-SVN: r218885
2014-12-19 04:36:54 +00:00
Ian Lance Taylor
47b6f9825f compiler: Avoid multiple evaluations in interface conversions.
Added assertions for cases that might lead to multiple
evaluations, and fixed all the problems I saw.

Test case already in master Go testsuite
(https://go-review.googlesource.com/#/c/1710/).

From-SVN: r218884
2014-12-19 04:05:59 +00:00
GCC Administrator
0f3e3f28e9 Daily bump.
From-SVN: r218883
2014-12-19 00:16:27 +00:00
Paolo Carlini
ac1a984a5f re PR c++/63723 (Narrowing conversion allowed in braced init list in SFINAE context)
2014-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/63723
	* g++.dg/cpp0x/sfinae54.C: New.

From-SVN: r218880
2014-12-19 00:02:05 +00:00
Jason Merrill
90f6debee4 re PR c++/64105 (ICE: in strip_typedefs, at cp/tree.c:1326)
PR c++/64105
	* parser.c (cp_parser_simple_type_specifier): Make auto parameter
	before -std=c++14 an error.

From-SVN: r218879
2014-12-18 18:53:15 -05:00
Paolo Carlini
18d27358a5 re PR c++/59204 (Incorrect metaprogram evaluation in SFINAE context)
2014-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59204
	* g++.dg/cpp0x/sfinae53.C: New.

From-SVN: r218878
2014-12-18 23:43:46 +00:00
Jason Merrill
3696ea5851 re PR c++/64352 (No SFINAE with deleted function)
PR c++/64352
	* pt.c (tsubst_copy_and_build): Pass complain to mark_used.

From-SVN: r218877
2014-12-18 17:22:42 -05:00
Jason Merrill
1b82e09e18 re PR c++/64251 (Chromium build error only with --enable-checking=yes)
PR c++/64251
	* decl2.c (mark_used): Don't mark if in_template_function.

From-SVN: r218876
2014-12-18 17:22:36 -05:00
Vladimir Makarov
03b9b5ce20 lra-constraints.c (lra-constraints.c): Exchange places of sclass and dclass.
2014-12-18  Vladimir Makarov  <vmakarov@redhat.com>

	* lra-constraints.c (lra-constraints.c): Exchange places of sclass
	and dclass.

From-SVN: r218875
2014-12-18 21:50:48 +00:00
Vladimir Makarov
32b38e8972 re PR rtl-optimization/64291 (Miscompile t-div in GMP's testsuite)
2014-12-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/64291
	* lra-remat.c (bad_for_rematerialization_p): Add UNPSEC_VLOATILE.
	(create_cands): Process only output reload insn with potential
	cands.

2014-12-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/64291
	* testsuite/gcc.target/i386/pr64291-[12].c: New tests.

From-SVN: r218874
2014-12-18 20:49:44 +00:00
Paolo Carlini
6e4992ca78 re PR c++/60955 (Erroneous warning about taking address of register with std=c++1y)
/cp
2014-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60955
	* pt.c (struct warning_sentinel): Move it...
	* cp-tree.h: ... here.
	* semantics.c (force_paren_expr): Use it.

/testsuite
2014-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60955
	* g++.dg/warn/register-parm-1.C: New.

From-SVN: r218871
2014-12-18 17:53:55 +00:00
H.J. Lu
fbe575b652 X86-64: Add -mskip-rax-setup
The Linux kernel never passes floating point arguments around, vararg
functions or not. Hence no vector registers are ever used when calling a
vararg function.  But gcc still dutifully emits an "xor %eax,%eax" before
each and every call of a vararg function.  Since no callee use that for
anything, these instructions are redundant.

This patch adds the -mskip-rax-setup option to skip setting up RAX
register when SSE is disabled and there are no variable arguments passed
in vector registers.  Since RAX register is used to avoid unnecessarily
saving vector registers on stack when passing variable arguments, the
impacts of this option are callees may waste some stack space, misbehave
or jump to a random location.  GCC 4.4 or newer don't those issues,
regardless the RAX register value since they don't check the RAX register
value when SSE is disabled.

gcc/

	* config/i386/i386.c (ix86_expand_call): Skip setting up RAX
	register for -mskip-rax-setup when there are no parameters
	passed in vector registers.
	* config/i386/i386.opt (mskip-rax-setup): New option.
	* doc/invoke.texi: Document -mskip-rax-setup.

gcc/testsuite/

	* gcc.target/i386/amd64-abi-7.c: New tests.
	* gcc.target/i386/amd64-abi-8.c: Likwise.
	* gcc.target/i386/amd64-abi-9.c: Likwise.

From-SVN: r218870
2014-12-18 09:35:45 -08:00
Alan Lawrence
8448880117 [AArch64] Simplify+improve patterns for ushr(d?)_n_u64 intrinsic
gcc/:
	* config/aarch64/aarch64-simd.md (aarch64_lshr_simddi): Handle shift
	by 64 by moving const0_rtx.
	(aarch64_ushr_simddi): Delete.

	* config/aarch64/aarch64.md (enum unspec): Delete UNSPEC_USHR64.

gcc/testsuite/:

        * gcc.target/aarch64/ushr64_1.c: Remove scan-assembler "ushr...64".

From-SVN: r218868
2014-12-18 15:20:11 +00:00
Alan Lawrence
b5b34d3759 [AArch64] Simplify patterns for sshr_n_[us]64 intrinsic
* config/aarch64/aarch64.md (enum "unspec"): Remove UNSPEC_SSHR64.

        * config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): Change shift
        amount to 63 if was 64.
        (aarch64_sshr_simddi): Remove.

From-SVN: r218867
2014-12-18 15:00:51 +00:00
Wilco Dijkstra
26e0ff9411 [AArch64] Add TARGET_MIN_DIVISIONS_FOR_RECIP_MUL
2014-12-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>

	* gcc/config/aarch64/aarch64.c (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL):
	Define.
	(aarch64_min_divisions_for_recip_mul): New function.

From-SVN: r218866
2014-12-18 13:48:34 +00:00
Wilco Dijkstra
0b82a5a253 [AArch64] Generalize code alignment
2014-12-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>

	* config/aarch64/aarch64-protos.h (tune-params): Add code alignment
	tuning parameters.
	* gcc/config/aarch64/aarch64.c (generic_tunings): Add code alignment
	tuning parameters.
	(cortexa53_tunings): Likewise.
	(cortexa57_tunings): Likewise.
	(thunderx_tunings): Likewise.
	(aarch64_override_options): Use new alignment tunings.

From-SVN: r218865
2014-12-18 13:46:22 +00:00
Martin Liska
09cb9532c4 re PR tree-optimization/64330 (IPA-ICF merges const exported vars that could be addressable in other TUs)
Fix for PR64330.

	PR tree-optimization/64330
	* ipa-icf.c (sem_variable::parse): Add checking
	for externally visible symbols and do not introduce
	an alias for an external declaration.

From-SVN: r218864
2014-12-18 13:32:18 +00:00
Jan Hubicka
2ddeb89bf5 re PR bootstrap/63573 (libgo: ICE building libgo on powerpc-linux-gnu)
Fix for PR bootstrap/63573.

	PR bootstrap/63573
	* tree-inline.c (remap_gimple_stmt): Handle gimple_call_from_thunk_p
	predicate.

From-SVN: r218861
2014-12-18 12:06:34 +00:00
Martin Liska
544dafa696 re PR ipa/64146 (ipa-icf breaks gold dynamic_test_2 test)
Fix for PR ipa/64146

	PR ipa/64146
	* ipa-icf.c (sem_function::merge): Check for
	decl_binds_to_current_def_p is newly added to merge operation.
	* g++.dg/ipa/pr64146.C: New test.

From-SVN: r218860
2014-12-18 12:02:22 +00:00
Rainer Orth
72c122a20e Change mpx effective-target test into link test
* lib/mpx-dg.exp (check_effective_target_mpx): Change into link test.
	Add main.

From-SVN: r218859
2014-12-18 11:54:40 +00:00
Rainer Orth
d8b1c7f44b Include target-utils.exp in boehm-gc testing
* testsuite/lib/boehm-gc.exp: Load target-utils.exp.

From-SVN: r218857
2014-12-18 09:42:22 +00:00
Prathamesh Kulkarni
0ecc12d8f0 Add myself to MAINTAINERS under Writer After Approval
From-SVN: r218856
2014-12-18 06:19:33 +00:00