Skip to content
Snippets Groups Projects
  1. Aug 07, 2013
    • Caroline Tice's avatar
      Commit the vtable verification feature. · 2077db1b
      Caroline Tice authored
      Commit the vtable verification feature.  This feature is designed to
      detect, at run time, if/when the vtable pointer in a C++ object has
      been corrupted, before allowing virtual calls through that pointer. 
      If pointer corruption is detected, execution of the program is halted.
      
      libstdc++-v3 ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * fragment.am: Add XTEMPLATE_FLAGS.
              * configure.ac: Add definitions for --enable-vtable-verify.
              * acinclude.m4:  Add --enable-vtable-verify and
              --disable-vtable-verify; define --enable-vtable-verify; define
              VTV_CXXFLAGS, VTV_PCH_CXXFLAGS and VTV_CXXLINKFLAGS.
              * config/abi/pre/gnu.ver: Export symbols for vtable verification.
              * libsupc++/Makefile.am: Define vtv_sources and add it to
              libsupc___la_SOURCES and libsupc__convenience_la_SOURCES.
              * libsupc++/vtv_stubs.cc: New file.
              * include/Makefile.am: Add VTV_PCH_CXXFLAGS to PCHFLAGS.
              * src/Makefile.am: Add VTV_CXXFLAGS to AM_CXXFLAGS; add
              VTV_CXXLINKFLAGS to CXXLINK.
              * src/c++98/Makefile.am: Comment out XTEMPLATE_FLAGS; add VTV_CXXFLAGS
              to AM_CXXFLAGS; add VTV_CXXXLINKFLAGS to CXXLINK.
              * src/C++11/Makefile.am: Ditto.
              * doc/xml/manual/configure.xml: Add entry for --enable-vtable-verify.
              * scripts/testsuite_flags.in: Add cxxvtvflags to Usage; cause
              cxxvtvflags to use VTV_CXXFLAGS and VTV_CXXLINKFLAGS.
              * testsuite/lib/libstdc++.exp: Add cxxvtvflags; add code to locate
              libvtv if --enable-vtable-verify was used; set cxxvtvflags; add
              cxxvtvflags to cxx_final.
              * testsuite/18_support/bad_exception/23591_thread-1.c: Add
              -fvtable-verify=none to compiler flags.
              * testsuite/17_intro/freestanding.cc: Add -fvtable-verify=none
              to compiler flags.
              * configure: Regenerated.
              * Makefile.in: Regenerated.
              * python/Makefile.in: Regenerated.
              * include/Makefile.in: Regenerated.
              * libsupc++/Makefile.in: Regenerated.
              * config.h.in: Regenerated.
              * po/Makefile.in: Regenerated.
              * src/Makefile.in: Regenerated.
              * src/c++98/Makefile.in: Regenerated.
              * src/c++11/Makefile.in: Regenerated.
              * doc/Makefile.in: Regenerated.
              * testsuite/Makefile.in: Regenerated.
      
      top level ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * configure.ac: Add target-libvtv to target_libraries; disable libvtv
              on non-linux systems; add target-libvtv to noconfigdirs; add
              libsupc++/.libs to C++ library search paths.
              * configure: Regenerated.
              * Makefile.def: Add libvtv to target_modules; make libvtv depend on
              libstdc++ and libgcc.
              * Makefile.in: Regenerated.
      
      include/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * vtv-change-permission.h: New file.
      
      contrib/ChangeLog:
      2013-08-06  Caroline Tice4  <cmtice@google.com>
      
              * gcc_update: Add libvtv files.
      
      libgcc/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              config.host (extra_parts): Add vtv_start.o, vtv_end.o
              vtv_start_preinit.o and vtv_end_preinit.o.
              configure.ac: Add code to check/set enable_vtable_verify.
              Makefile.in: Add rules to build vtv_*.o, if enable_vtable_verify is
              true.
              vtv_start_preinit.c: New file.
              vtv_end_preinit.c: New file.
              vtv_start.c: New file.
              vtv_end.c: New file.
              configure: Regenerated.
      
      gcc/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * gcc.c (VTABLE_VERIFICATION_SPEC): New definition.
              (LINK_COMMAND_SPEC): Add VTABLE_VERIFICATION_SPEC.
              * tree-pass.h: Add pass_vtable_verify.
              * varasm.c (assemble_variable): Add code to properly set the comdat
              section and name for the .vtable_map_vars section.
              (assemble_vtyv_preinit_initializer): New function.
              (default_sectin_type_flags):  Make sure .vtable_map_vars section has
              LINK_ONCE flag.
              * output.h: Add function decl for assemble_vtv_preinit_initializer.
              * vtable-verify.c: New file.
              * vtable-verify.h: New file.
              * flag-types.h (enum vtv_priority): Defintions for flag_vtable_verify
              initialiation levels.
              * timevar.def (TV_VTABLE_VERIFICATION): New definition.
              * passes.def: Insert pass_vtable_verify.
              * aclocal.m4: Reorder includes.
              * doc/invoke.texi: Add documentation for the flags -fvtable-verify=,
      	-fvtv-debug and -fvtv-counts.
              * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add vtv_start*.o,
      as appropriate, if -fvtable-verify=... is used.
              (GNU_USER_TARGET_ENDFILE_SPEC): Add vtv_end*.o as appropriate, if
              -fvtable-verify=... is used.
              * Makefile.in (OBJS):  Add vtable-verify.o to list.
              (vtable-verify.o): Add new build rule.
              (GTFILES): Add vtable-verify.c to list.
              * common.opt (fvtable-verify=): New flag.
              (vtv_priority): Values for fvtable-verify= flag.
              (fvtv-counts): New flag.
      (fvtv-debug): New flag.
              * tree.h (save_vtable_map_decl): New extern function decl.
      
      
      gcc/cp/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              * Make-lang.in (*CXX_AND_OBJCXX_OBJS):  Add vtable-class-hierarchy.o to
              list.
              (vtable-class-hierarchy.o): Add build rule.
              * cp-tree.h (vtv_start_verification_constructor_init_function): New
              extern function decl.
              (vtv_finish_verification_constructor_init_function): New extern
              function decl.
              (build_vtbl_address): New extern function decl.
              (get_mangled_vtable_map_var_name): New extern function decl.
              (vtv_compute_class_hierarchy_transitive_closure): New extern function
              decl.
              (vtv_generate_init_routine): New extern function decl.
              (vtv_save_class_info): New extern function decl.
              (vtv_recover_class_info): New extern function decl.
              (vtv_build_vtable_verify_fndecl): New extern function decl.
              * class.c (finish_struct_1): Add call to vtv_save_class_info if
              flag_vtable_verify is true.
              * config-lang.in: Add vtable-class-hierarchy.c to gtfiles list.
              * vtable-class-hierarchy.c: New file.
              * mangle.c (get_mangled_vtable_map_var_name):  New function.
              * decl2.c (start_objects): Update function comment.
              (cp_write_global_declarations): Call vtv_recover_class_info,
              vtv_compute_class_hierarchy_transitive_closure and
              vtv_build_vtable_verify_fndecl, before calling
              finalize_compilation_unit, and call vtv_generate_init_rount after, IFF
              flag_vtable_verify is true.
              (vtv_start_verification_constructor_init_function): New function.
              (vtv_finish_verification_constructor_init_function): New function.
              * init.c (build_vtbl_address): Remove static qualifier from function.
      
      libvtv/ChangeLog:
      2013-08-06  Caroline Tice  <cmtice@google.com>
      
              Initial check-in of new vtable verification feature.
              * configure.ac : New file.
              * acinclude.m4 : New file.
              * Makefile.am : New file.
              * aclocal.m4 : New file.
              * configure.tgt : New file.
              * configure: New file (generated).
              * Makefile.in: New file (generated).
              * vtv_set.h : New file.
              * vtv_utils.cc : New file.
              * vtv_utils.h : New file.
              * vtv_malloc.cc : New file.
              * vtv_rts.cc : New file.
              * vtv_malloc.h : New file.
              * vtv_rts.h : New file.
              * vtv_fail.cc : New file.
              * vtv_fail.h : New file.
              * vtv_map.h : New file.
              * scripts/run-testsuite.sh : New file.
              * scripts/sum-vtv-counts.c : New file.
              * testsuite/parts-test-main.h : New file.
              * testusite/dataentry.cc : New file.
              * testsuite/temp_deriv.cc : New file.
              * testsuite/register_pair.cc : New file.
              * testsuite/virtual_inheritance.cc : New file.
              * testsuite/field-test.cc : New file.
              * testsuite/nested_vcall_test.cc : New file.
              * testsuite/template-list-iostream.cc : New file.
              * testsuite/register_pair_inserts.cc : New file.
              * testsuite/register_pair_inserts_mt.cc : New file.
              * testsuite/event.list : New file.
              * testsuite/parts-test-extra-parts-views.cc : New file.
              * testsuite/parts-test-extra-parts-views.h : New file.
              * testsuite/environment-fail-32.s : New file.
              * testsuite/parts-test-extra-parts.h : New file.
              * testsuite/temp_deriv2.cc : New file.
              * testsuite/dlopen_mt.cc : New file.
              * testsuite/event.h : New file.
              * testsuite/template-list.cc : New file.
              * testsuite/replace-fail.cc : New file.
              * testsuite/Makefile.am : New file.
              * testsuite/Makefile.in: New file (generated).
              * testsuite/mempool_negative.c : New file.
              * testsuite/parts-test-main.cc : New file.
              * testsuite/event-private.cc : New file.
              * testsuite/thunk.cc : New file.
              * testsuite/event-defintiions.cc : New file.
              * testsuite/event-private.h : New file.
              * testsuite/parts-test.list : New file.
              * testusite/register_pair_mt.cc : New file.
              * testsuite/povray-derived.cc : New file.
              * testsuite/event-main.cc : New file.
              * testsuite/environment.cc : New file.
              * testsuite/template-list2.cc : New file.
              * testsuite/thunk_vtable_map_attack.cc : New file.
              * testsuite/parts-test-extra-parts.cc : New file.
              * testsuite/environment-fail-64.s : New file.
              * testsuite/dlopen.cc : New file.
              * testsuite/so.cc : New file.
              * testsuite/temp_deriv3.cc : New file.
              * testsuite/const_vtable.cc : New file.
              * testsuite/mempool_positive.c : New file.
              * testsuite/dup_name.cc : New file.
      
      From-SVN: r201555
      2077db1b
  2. Aug 01, 2013
    • Maxim Kuvyrkov's avatar
      Fix licenses on several libgcc files. · 46549c20
      Maxim Kuvyrkov authored
      	* config/aarch64/sfp-machine.h, config/aarch64/sync-cache.c,
      	* config/i386/cpuinfo.c, config/ia64/unwind-ia64.h,
      	* config/mips/vr4120-div.S: Fix license from GPL-3.0+ to
      	GPL-3.0-with-GCC-exception.
      
      From-SVN: r201417
      46549c20
  3. Jul 30, 2013
  4. Jul 23, 2013
  5. Jul 19, 2013
    • Georg-Johann Lay's avatar
      re PR target/57516 ([avr] Incorrect fixed-point rounding result in the overflow case) · 02371798
      Georg-Johann Lay authored
      gcc/
      	PR target/57516
      	* config/avr/avr-fixed.md (round<mode>3_const): Turn expander to insn.
      	* config/avr/avr.md (adjust_len): Add `round'.
      	* config/avr/avr-protos.h (avr_out_round): New prototype.
      	(avr_out_plus): Add `out_label' argument.
      	* config/avr/avr.c (avr_out_plus_1): Add `out_label' argument.
      	(avr_out_plus): Pass down `out_label' to avr_out_plus_1.
      	Handle the case where `insn' is just a pattern.
      	(avr_out_bitop): Handle the case where `insn' is just a pattern.
      	(avr_out_round): New function.
      	(avr_adjust_insn_length): Handle ADJUST_LEN_ROUND.
      
      libgcc/
      	PR target/57516
      	* config/avr/lib1funcs-fixed.S (__roundqq3, __rounduqq3)
      	(__round_s2_const, __round_u2_const)
      	(__round_s4_const, __round_u4_const, __round_x8):
      	Saturate result if addition result cannot be represented.
      
      gcc/testsuite/
      	PR target/57516
      	* gcc.target/avr/torture/builtins-4-roundfx.c (test2hr, test2k):
      	Adjust to corrected rounding.
      
      From-SVN: r201051
      02371798
  6. Jul 15, 2013
  7. Jul 09, 2013
  8. Jul 06, 2013
    • Jakub Jelinek's avatar
      re PR target/29776 (result of ffs/clz/ctz/popcount/parity are already sign-extended) · 1f6eac90
      Jakub Jelinek authored
      	PR target/29776
      	* fold-const.c (tree_call_nonnegative_warnv_p): Return true
      	for BUILT_IN_C{LZ,LRSB}*.
      	* tree.h (CASE_INT_FN): Add FN##IMAX case.
      	* tree-vrp.c (extract_range_basic): Handle
      	BUILT_IN_{FFS,PARITY,POPCOUNT,C{LZ,TZ,LRSB}}*.  For
      	BUILT_IN_CONSTANT_P if argument isn't (D) of PARM_DECL,
      	fall thru to code calling set_value*.
      	* builtins.c (expand_builtin): Remove *IMAX cases.
      	(fold_builtin_bitop): For BUILT_IN_CLRSB* return NULL_TREE
      	if width is bigger than 2*HWI.
      
      	* libgcc2.c (__floattisf): Avoid undefined signed overflow.
      
      	* gcc.dg/tree-ssa/vrp89.c: New test.
      
      From-SVN: r200731
      1f6eac90
  9. Jun 28, 2013
    • Jakub Jelinek's avatar
      re PR middle-end/36041 (Speed up builtin_popcountll) · 4ea3d774
      Jakub Jelinek authored
      	PR middle-end/36041
      	* libgcc2.c (POPCOUNTCST2, POPCOUNTCST4, POPCOUNTCST8, POPCOUNTCST):
      	Define.
      	(__popcountSI2): For __SIZEOF_INT__ > 2 targets use arithmetics
      	instead of table lookups.
      	(__popcountDI2): Likewise.
      
      From-SVN: r200506
      4ea3d774
  10. Jun 25, 2013
  11. Jun 21, 2013
    • Joseph Myers's avatar
      re PR other/53317 (Conversion from __int128 to __float128) · fa1e55b0
      Joseph Myers authored
      	PR other/53317
      
      gcc/testsuite:
      	* gcc.dg/torture/fp-int-convert-float128-timode-2.c: New test.
      
      libgcc:
      	* soft-fp/adddf3.c: Update from glibc.
      	* soft-fp/addsf3.c: Likewise.
      	* soft-fp/addtf3.c: Likewise.
      	* soft-fp/divdf3.c: Likewise.
      	* soft-fp/divsf3.c: Likewise.
      	* soft-fp/divtf3.c: Likewise.
      	* soft-fp/double.h: Likewise.
      	* soft-fp/eqdf2.c: Likewise.
      	* soft-fp/eqsf2.c: Likewise.
      	* soft-fp/eqtf2.c: Likewise.
      	* soft-fp/extenddftf2.c: Likewise.
      	* soft-fp/extended.h: Likewise.
      	* soft-fp/extendsfdf2.c: Likewise.
      	* soft-fp/extendsftf2.c: Likewise.
      	* soft-fp/fixdfdi.c: Likewise.
      	* soft-fp/fixdfsi.c: Likewise.
      	* soft-fp/fixsfdi.c: Likewise.
      	* soft-fp/fixsfsi.c: Likewise.
      	* soft-fp/fixtfdi.c: Likewise.
      	* soft-fp/fixtfsi.c: Likewise.
      	* soft-fp/fixunsdfdi.c: Likewise.
      	* soft-fp/fixunsdfsi.c: Likewise.
      	* soft-fp/fixunssfdi.c: Likewise.
      	* soft-fp/fixunssfsi.c: Likewise.
      	* soft-fp/fixunstfdi.c: Likewise.
      	* soft-fp/fixunstfsi.c: Likewise.
      	* soft-fp/floatdidf.c: Likewise.
      	* soft-fp/floatdisf.c: Likewise.
      	* soft-fp/floatditf.c: Likewise.
      	* soft-fp/floatsidf.c: Likewise.
      	* soft-fp/floatsisf.c: Likewise.
      	* soft-fp/floatsitf.c: Likewise.
      	* soft-fp/floatundidf.c: Likewise.
      	* soft-fp/floatundisf.c: Likewise.
      	* soft-fp/floatunditf.c: Likewise.
      	* soft-fp/floatunsidf.c: Likewise.
      	* soft-fp/floatunsisf.c: Likewise.
      	* soft-fp/floatunsitf.c: Likewise.
      	* soft-fp/gedf2.c: Likewise.
      	* soft-fp/gesf2.c: Likewise.
      	* soft-fp/getf2.c: Likewise.
      	* soft-fp/ledf2.c: Likewise.
      	* soft-fp/lesf2.c: Likewise.
      	* soft-fp/letf2.c: Likewise.
      	* soft-fp/muldf3.c: Likewise.
      	* soft-fp/mulsf3.c: Likewise.
      	* soft-fp/multf3.c: Likewise.
      	* soft-fp/negdf2.c: Likewise.
      	* soft-fp/negsf2.c: Likewise.
      	* soft-fp/negtf2.c: Likewise.
      	* soft-fp/op-1.h: Likewise.
      	* soft-fp/op-2.h: Likewise.
      	* soft-fp/op-4.h: Likewise.
      	* soft-fp/op-8.h: Likewise.
      	* soft-fp/op-common.h: Likewise.
      	* soft-fp/quad.h: Likewise.
      	* soft-fp/single.h: Likewise.
      	* soft-fp/soft-fp.h: Likewise.
      	* soft-fp/subdf3.c: Likewise.
      	* soft-fp/subsf3.c: Likewise.
      	* soft-fp/subtf3.c: Likewise.
      	* soft-fp/truncdfsf2.c: Likewise.
      	* soft-fp/trunctfdf2.c: Likewise.
      	* soft-fp/trunctfsf2.c: Likewise.
      	* soft-fp/unorddf2.c: Likewise.
      	* soft-fp/unordsf2.c: Likewise.
      	* soft-fp/unordtf2.c: Likewise.
      	* config/aarch64/sfp-machine.h (_FP_QNANNEGATEDP): Define to 0.
      	* config/arm/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/c6x/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/i386/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/ia64/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/lm32/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/moxie/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/rs6000/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/score/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      	* config/tilegx/sfp-machine32.h (_FP_QNANNEGATEDP): Likewise.
      	* config/tilegx/sfp-machine64.h (_FP_QNANNEGATEDP): Likewise.
      	* config/tilepro/sfp-machine.h (_FP_QNANNEGATEDP): Likewise.
      
      From-SVN: r200318
      fa1e55b0
  12. Jun 16, 2013
    • Jürgen Urban's avatar
      mips.h (ISA_HAS_MUL3): Include TARGET_MIPS5900. · 0de86a92
      Jürgen Urban authored
      gcc/
      2013-06-16  Jürgen Urban  <JuergenUrban@gmx.de>
      
      	* config/mips/mips.h (ISA_HAS_MUL3): Include TARGET_MIPS5900.
      	(ISA_HAS_MULT, ISA_HAS_DMULT, ISA_HAS_DIV, ISA_HAS_DDIV): New macros.
      	* config/mips/mips.md (mul<mode>3, mul<mode>3_internal)
      	(mul<mode>3_r4000): Require ISA_HAS_<D>MULT.
      	(mul<mode>3_mul3): Handle TARGET_MIPS5900.
      	(mulsidi3_64bit_dmul): Remove redundant TARGET_64BIT test.
      	(<su>muldi3_highpart, <su>muldi3_highpart_internal, <u>mulditi3)
      	(<u>mulditi3_internal, <u>mulditi3_r4000): Require ISA_HAS_DMULT
      	instead of TARGET_64BIT.
      	(divmod<mode>4, udivmod<mode>4, <u>divmod<GPR:mode>4_hilo_<HILO:mode>):
      	Require ISA_HAS_<D>DIV.
      
      libgcc/
      2013-06-16  Jürgen Urban  <JuergenUrban@gmx.de>
      
      	* config/mips/lib2funcs.c: New file.
      	* config/mips/t-mips (LIB2ADD_ST): Add it.
      
      From-SVN: r200140
      0de86a92
  13. Jun 09, 2013
  14. Jun 08, 2013
    • Walter Lee's avatar
      atomic.h: Don't include stdint.h or features.h. · 776434d1
      Walter Lee authored
      	* config/tilepro/atomic.h: Don't include stdint.h or features.h.
      	Replace int64_t with long long.  Add __extension__ where
      	appropriate.
      	* config/tilepro/atomic.c: Include config.h.
      
      From-SVN: r199855
      776434d1
  15. Jun 06, 2013
  16. Jun 04, 2013
    • Jürgen Urban's avatar
      gcc/ · 107eea2c
      Jürgen Urban authored
      2013-06-03  Jürgen Urban  <JuergenUrban@gmx.de>
      
      	* config.gcc (mipsr5900-*-elf*, mipsr5900el-*-elf*, mips64r5900-*-elf*)
      	(mips64r5900el-*-elf*): New configurations.
      	* config/mips/mips-cpus.def (r5900): New processor.
      	* config/mips/mips-tables.opt: Regenerate.
      	* config/mips/mips.c (mips_rtx_cost_data): Add an R5900 entry.
      	(mips_issue_rate): Handle PROCESSOR_R5900.
      	(mips_reorg_process_insns): Force reorder mode for the R5900.
      	* config/mips/mips.h (TARGET_MIPS5900): Define.
      	(ISA_HAS_CONDMOVE, ISA_HAS_PREFETCH, ISA_HAS_HILO_INTERLOCKS): Include
      	TARGET_MIPS5900.
      	(ISA_HAS_LOAD_DELAY, ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY): Exclude
      	TARGET_MIPS5900.
      	* config/mips/mips.md (processor): Add r5900.
      	(MOVECC): Disallow CCmode conditions for TARGET_MIPS5900.
      
      libgcc/
      2013-06-03  Jürgen Urban  <JuergenUrban@gmx.de>
      
      	* config.host (mipsr5900-*-elf*, mipsr5900el-*-elf*, mips64r5900-*-elf*)
      	(mips64r5900el-*-elf*): New configurations.
      
      From-SVN: r199666
      107eea2c
    • Alan Modra's avatar
      ibm-ldouble.c: Enable for little-endian. · 5cc19c62
      Alan Modra authored
      	* config/rs6000/ibm-ldouble.c: Enable for little-endian.
      
      From-SVN: r199650
      5cc19c62
  17. Jun 03, 2013
    • Yuri Rumyantsev's avatar
      i386.c (ix86_lea_outperforms): Fix formatting. · 0f1d3965
      Yuri Rumyantsev authored
      	* config/i386/i386.c (ix86_lea_outperforms): Fix formatting.
      	(ix86_avoid_lea_for_addr): Likewise.
      	(exact_dependency_1): Likewise.
      	(ix86_adjust_cost): Likewise.
      	(swap_top_of_ready_list): Fix formatting and !reload_completed check
      	removed.
      	(do_reorder_for_imul): Fix typo, formatting and
      	!reload_completed check removed.
      	(ix86_sched_reorder): Fix typo and formatting.
      	(fold_builtin_cpu): Move M_INTEL_SLM at the end of processor types
      	list.
      
      	* config/i386/cpuinfo.c (INTEL_SLM): New enum value.
      
      From-SVN: r199611
      0f1d3965
  18. May 30, 2013
    • Yuri Rumyantsev's avatar
      Silvermont (SLM) architecture pipeline model, tuning and insn selection. · 0b871ccf
      Yuri Rumyantsev authored
      
              Silvermont (SLM) architecture pipeline model, tuning and
              insn selection.
              * config.gcc: Add slm config options and target.
      
              * config/i386/slm.md: New.
      
              * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
      
              * gcc/config/i386/i386-c.c (ix86_target_macros_internal):  New case
              PROCESSOR_SLM.
              (ix86_target_macros_internal): Likewise.
      
              * gcc/config/i386/i386.c (slm_cost): New cost.
              (m_SLM): New macro flag.
              (initial_ix86_tune_features): Set m_SLM.
              (x86_accumulate_outgoing_args): Likewise.
              (x86_arch_always_fancy_math_387): Likewise.
              (processor_target_table): Add slm cost.
              (cpu_names): Add slm cpu name.
              (x86_option_override_internal): Set SLM ISA.
              (ix86_issue_rate): New case PROCESSOR_SLM.
              (ia32_multipass_dfa_lookahead): Likewise.
              (fold_builtin_cpu): Add slm.
      
              * config/i386/i386.h (TARGET_SLM): New target macro.
              (target_cpu_default): Add TARGET_CPU_DEFAULT_slm.
              (processor_type): Add PROCESSOR_SLM.
      
              * config/i386/i386.md (cpu): Add new value "slm".
              (slm.md): Include slm.md.
      
              * libgcc/config/i386/cpuinfo.c (INTEL_SLM): New enum value.
      
      
      Co-Authored-By: default avatarIgor Zamyatin <igor.zamyatin@intel.com>
      
      From-SVN: r199444
      0b871ccf
  19. May 28, 2013
    • Eric Botcazou's avatar
      sol2-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Do not set fs->signal_frame for... · 0ba045df
      Eric Botcazou authored
      sol2-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Do not set fs->signal_frame for SIGFPE raised for IEEE-754 exceptions.
      
      	* config/sparc/sol2-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Do not set
      	fs->signal_frame for SIGFPE raised for IEEE-754 exceptions.
      	* config/i386/sol2-unwind.h (x86_fallback_frame_state): Likewise.
      
      From-SVN: r199381
      0ba045df
  20. May 22, 2013
  21. May 17, 2013
  22. May 08, 2013
  23. May 06, 2013
  24. Apr 25, 2013
    • Alan Modra's avatar
      config.host: Match little-endian powerpc-linux. · b9a7eb5d
      Alan Modra authored
      libgcc/
      	* config.host: Match little-endian powerpc-linux.
      gcc/
      	* config.gcc: Support little-endian powerpc-linux targets.
      	* config/rs6000/linux.h (LINK_OS_LINUX_EMUL): Define.
      	(LINK_OS_LINUX_SPEC): Define.
      	* config/rs6000/linuxspe.h (TARGET_DEFAULT):
      	Preserve MASK_LITTLE_ENDIAN.
      	* config/rs6000/default64.h (TARGET_DEFAULT): Likewise.
      	* config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Likewise.
      	* config/rs6000/linux64.h (OPTION_LITTLE_ENDIAN): Don't zero.
      	(LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Define.
      	(LINK_OS_LINUX_SPEC32, LINK_OS_LINUX_SPEC64): Use above.
      	* config/rs6000/rs6000.c (output_toc): Don't use .tc for TARGET_ELF.
      	Correct fp word order for little-endian.  Don't shift toc entries
      	smaller than a word for little-endian.
      	* config/rs6000/rs6000.md (bswaphi2, bswapsi2 split): Comment.
      	(bswapdi2 splits): Correct low-part subreg for little-endian.
      	Remove wrong BYTES_BIG_ENDIAN tests, and rename vars to remove
      	low/high where such is correct only for be.
      	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Allow
      	little-endian for -mcall-aixdesc.
      
      From-SVN: r198273
      b9a7eb5d
  25. Apr 19, 2013
  26. Apr 11, 2013
    • Julian Brown's avatar
      libgcc/ · b6b9af2f
      Julian Brown authored
      	* config/arm/linux-atomic.c (SUBWORD_SYNC_OP, SUBWORD_VAL_CAS)
      	(SUBWORD_TEST_AND_SET): Use signed char/short types instead of
      	unsigned char/unsigned short.
      	(__sync_val_compare_and_swap_{1,2}): Handle signed argument.
      
      From-SVN: r197806
      b6b9af2f
  27. Apr 06, 2013
  28. Apr 04, 2013
  29. Mar 27, 2013
  30. Mar 26, 2013
  31. Mar 25, 2013
  32. Mar 20, 2013
    • Robert Mason's avatar
      2013-03-20 Robert Mason <rbmj@verizon.net> · d2ae19d9
      Robert Mason authored
      	* config/vxlib-tls.c (__gthread_get_tsd_data,)
      	(__gthread_set_tsd_data, __gthread_enter_tsd_dtor_context,)
      	(__gthread_leave_tsd_dtor_context): Add prototypes.
      	(tls_delete_hook): Update.
      
      From-SVN: r196842
      d2ae19d9
    • Catherine Moore's avatar
      extend.texi: (micromips, nomicromips, nocompression): Document new function attributes. · 22c4c869
      Catherine Moore authored
      
      gcc/
      2013-03-20  Catherine Moore  <clm@codesourcery.com>
      	    Maciej W. Rozycki  <macro@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      	    Nathan Sidwell <nathan@codesourcery.com>
      	    Iain Sandoe  <iain@codesourcery.com>
      	    Nathan Froyd  <froydnj@codesourcery.com>
      	    Chao-ying Fu <fu@mips.com>
      
      	* doc/extend.texi: (micromips, nomicromips, nocompression):
      	Document new function attributes. 
      	* doc/invoke.texi (minterlink-compressed, mmicromips,
      	m14k, m14ke, m14kec): Document new options.
      	(minterlink-mips16): Update documentation.
      	* doc/md.texi (ZC, ZD): Document new constraints.
      	* configure.ac (gcc_cv_as_micromips): Check if linker
      	supports the .set micromips directive.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* config/mips/mips-tables.opt: Regenerate.
      	* config/mips/micromips.md: New file.
      	* constraints.md (ZC, ZD): New constraints.
      	* config/mips/predicates.md (movep_src_register): New predicate.
      	(movep_src_operand): New predicate.
      	(non_volatile_mem_operand): New predicate.
      	* config/mips/mips.md (multimem): New type.
      	(length): Differentiate between 17-bit and 18-bit branch offsets.
      	(MOVEP1, MOVEP2): New mode iterator.
       	(mov_<load>l): Use ZC constraint.
      	(mov_<load>r): Likewise.
      	(mov_<store>l): Likewise.
      	(mov_<store>r): Likewise.
      	(*branch_equality<mode>_inverted): Add microMIPS support.
      	(*branch_equality<mode>): Likewise.
      	(*jump_absolute): Likewise.
      	(indirect_jump_<mode>): Likewise.
      	(tablejump_<mode>): Likewise.
      	(<optab>_internal): Likewise.
      	(sibcall_internal): Likewise.
      	(sibcall_value_internal): Likewise.
      	(prefetch): Use constraint ZD.
      	* config/mips/mips.opt (minterlink-compressed): New option.
      	(minterlink-mips16): Now an alias for minterlink-compressed.
      	(mmicromips): New option.
      	* config/mips/sync.md (sync_compare_and_swap<mode>): Use ZR constraint.
      	(compare_and_swap_12): Likewise.
      	(sync_add<mode>): Likewise.
      	(sync_<optab>_12): Likewise.
      	(sync_old_<optab>_12): Likewise.
      	(sync_new_<optab>_12): Likewise.
      	(sync_nand_12): Likewise.
      	(sync_old_nand_12): Likewise.
      	(sync_new_nand_12): Likewise.
      	(sync_sub<mode>): Likewise.
      	(sync_old_add<mode>): Likewise.
      	(sync_old_sub<mode>): Likewise.
      	(sync_new_add<mode>): Likewise.
      	(sync_new_sub<mode>): Likewise.
      	(sync_<optab><mode>): Likewise.
      	(sync_old_<optab><mode>): Likewise.
      	(sync_new_<optab><mode>): Likewise.
      	(sync_nand<mode>): Likewise.
      	(sync_old_nand<mode>): Likewise.
      	(sync_new_nand<mode>): Likewise.
      	(sync_lock_test_and_set<mode>): Likewise.
      	(test_and_set_12): Likewise.
      	(atomic_compare_and_swap<mode>): Likewise.
      	(atomic_exchange<mode>_llsc): Likewise.
      	(atomic_fetch_add<mode>_llsc): Likewise.
      	* config/mips/mips-cpus.def (m14kc, m14k): New processors.
      	* config/mips/mips-protos.h (umips_output_save_restore): New prototype.
      	(umips_save_restore_pattern_p): Likewise.
      	(umips_load_store_pair_p): Likewise.
      	(umips_output_load_store_pair): Likewise.
      	(umips_movep_target_p): Likewise.
      	(umips_12bit_offset_address_p): Likewise.
      	* config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS.
      	(mips_base_mips16): Rename this...
      	(mips_base_compression_flags): ...to this. Update all uses.
      	(mips_attribute_table): Add micromips, nomicromips and nocompression.
      	(mips_mips16_decl_p): Delete.
      	(mips_nomips16_decl_p): Delete.
       	(mips_get_compress_on_flags): New function.
      	(mips_get_compress_off_flags): New function.
      	(mips_get_compress_mode): New function.
      	(mips_get_compress_on_name): New function.
      	(mips_get_compress_off_name): New function.
      	(mips_insert_attributes): Support multiple compression types.
      	(mips_merge_decl_attributes): Likewise.
      	(umips_12bit_offset_address_p): New function.
      	(mips_start_function_definition): Emit .set micromips directive.
      	(mips_call_may_need_jalx_p): New function.
      	(mips_function_ok_for_sibcall): Add microMIPS support.
      	(mips_print_operand_punctuation): Support short delay slots and
      	compact jumps.
      	(umips_swm_mask, umips_swm_encoding): New.
      	(umips_build_save_restore): New function.
      	(mips_for_each_saved_gpr_and_fpr): Add microMIPS support.
      	(was_mips16_p): Remove.
      	(old_compression_mode): New.
      	(mips_set_compression_mode): New function.
      	(mips_set_current_function): Add microMIPS support.
      	(mips_option_override): Likewise.
      	(umips_save_restore_pattern_p): New function.
      	(umips_output_save_restore): New function.
      	(umips_load_store_pair_p_1): New function.
      	(umips_load_store_pair_p): New function.
      	(umips_output_load_store_pair_1): New function.
      	(umips_output_load_store_pair): New function.
      	(umips_movep_target_p) New function.
      	(mips_prepare_pch_save): Add microMIPS support.
      	* config/mips/mips.h (TARGET_COMPRESSION): New.
      	(TARGET_CPU_CPP_BUILTINS): Update macro
      	to use new compression flags and to support microMIPS.
      	(MIPS_ISA_LEVEL_SPEC): Add m14k processors.
      	(MIPS_ARCH_FLOAT_SPEC): Likewise.
      	(ISA_HAS_LWXS): Include TARGET_MICROMIPS.
      	(ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS.
      	(ASM_SPEC): Support mmicromips and mno-micromips.
      	(M16STORE_REG_P): New macro.
      	(MIPS_CALL): Support TARGET_MICROMIPS.
      	(MICROMIPS_J): New macro.
      	(mips_base_mips16): Rename this...
      	(mips_base_compression_flags): ...to this.
      	(UMIPS_12BIT_OFFSET_P): New macro.
      	* config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS.
      	(MULTILIB_DIRNAMES): Likewise.
      libgcc/
      2013-03-20  Catherine Moore  <clm@codesourcery.com>
      	    Joseph Myers  <joseph@codesourcery.com>
      	    Chao-ying Fu  <fu@mips.com>
      
      	* config/mips/mips16.S:  Don't build for microMIPS.
      	* config/mips/linux-unwind.h: Handle microMIPS frame.
      	* config/mips/crtn.S (fini, init): New labels.
      gcc/testsuite/
      2013-03-20  Catherine Moore  <clm@codesourcery.com>
      	    Richard Sandiford <rdsandiford@googlemail.com>
      
      	* gcc.target/mips/mips.exp: Add microMIPS support.
      	* gcc.target/mips/umips-movep-2.c: New test.
      	* gcc.target/mips/umips-lwp-2.c: New test.
      	* gcc.target/mips/umips-swp-5.c: New test.
      	* gcc.target/mips/umips-constraints-1.c: New test.
      	* gcc.target/mips/umips-lwp-3.c: New test.
      	* gcc.target/mips/umips-swp-6.c: New test.
      	* gcc.target/mips/umips-constraints-2.c: New test.
      	* gcc.target/mips/umips-save-restore-1.c: New test.
      	* gcc.target/mips/umips-lwp-4.c: New test.
      	* gcc.target/mips/umips-swp-7.c: New test.
      	* gcc.target/mips/umips-save-restore-2.c: New test.
      	* gcc.target/mips/umips-lwp-swp-volatile.c: New test.
      	* gcc.target/mips/umips-lwp-5.c: New test.
      	* gcc.target/mips/umips-save-restore-3.c: New test.
      	* gcc.target/mips/umips-lwp-6.c: New test.
      	* gcc.target/mips/umips-swp-1.c: New test.
      	* gcc.target/mips/umips-lwp-7.c: New test.
      	* gcc.target/mips/umips-swp-2.c: New test.
      	* gcc.target/mips/umips-lwp-8.c: New test.
      	* gcc.target/mips/umips-swp-3.c: New test.
      	* gcc.target/mips/umips-movep-1.c: New test.
      	* gcc.target/mips/umips-lwp-1.c: New test.
      	* gcc.target/mips/umips-swp-4.c: New test.
      
      
      Co-Authored-By: default avatarChao-ying Fu <fu@mips.com>
      Co-Authored-By: default avatarIain Sandoe <iain@codesourcery.com>
      Co-Authored-By: default avatarJoseph Myers <joseph@codesourcery.com>
      Co-Authored-By: default avatarMaciej W. Rozycki <macro@codesourcery.com>
      Co-Authored-By: default avatarNathan Froyd <froydnj@codesourcery.com>
      Co-Authored-By: default avatarNathan Sidwell <nathan@codesourcery.com>
      Co-Authored-By: default avatarRichard Sandiford <rdsandiford@googlemail.com>
      Co-Authored-By: default avatarTom de Vries <tom@codesourcery.com>
      
      From-SVN: r196828
      22c4c869
  33. Mar 14, 2013
    • Jakub Jelinek's avatar
      re PR tree-optimization/53265 (Warn when undefined behavior implies smaller iteration count) · fbd28bc3
      Jakub Jelinek authored
      	PR tree-optimization/53265
      	* common.opt (Waggressive-loop-optimizations): New option.
      	* tree-ssa-loop-niter.c: Include tree-pass.h.
      	(do_warn_aggressive_loop_optimizations): New function.
      	(record_estimate): Call it.  Don't add !is_exit bounds to loop->bounds
      	if number_of_latch_executions returned constant.
      	(estimate_numbers_of_iterations_loop): Call number_of_latch_executions
      	early.  If number_of_latch_executions returned constant, set
      	nb_iterations_upper_bound back to it.
      	* cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations
      	field.
      	* Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H).
      	* doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document.
      
      	* gcc.dg/pr53265.c: New test.
      	* gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations
      	to dg-options.
      	* g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3
      	arrays.
      	* gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo.  Add argument
      	n, use it as high bound instead of 4.
      
      	* unwind-dw2.c (execute_cfa_program): Avoid
      	-Waggressive-array-optimizations warnings for DW_CFA_GNU_window_save
      	on targets with DWARF_FRAME_REGISTERS < 32.
      
      	* testsuite/libmudflap.c/fail37-frag.c: Add optimization barrier.
      
      From-SVN: r196650
      fbd28bc3
  34. Mar 13, 2013
    • Oleg Endo's avatar
      re PR target/49880 (SuperH: ICE when -m4 is used with -mdiv=call-div1) · decc676e
      Oleg Endo authored
      	PR target/49880
      	* config/sh/sh.opt (FPU_SINGLE_ONLY): New mask.
      	(musermode): Convert to Var(TARGET_USERMODE).
      	* config/sh/sh.h (SELECT_SH2A_SINGLE_ONLY, SELECT_SH4_SINGLE_ONLY,
      	MASK_ARCH): Add MASK_FPU_SINGLE_ONLY.
      	* config/sh/sh.c (sh_option_override): Use
      	TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY for call-fp case.
      	* config/sh/sh.md (udivsi3_i1, divsi3_i1): Remove ! TARGET_SH4
      	condition.
      	(udivsi3_i4, divsi3_i4): Use TARGET_FPU_DOUBLE condition instead of
      	TARGET_SH4.
      	(udivsi3_i4_single, divsi3_i4_single): Use
      	TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE instead of TARGET_HARD_SH4.
      
      	PR target/49880
      	* config/sh/lib1funcs.S (sdivsi3_i4, udivsi3_i4): Enable for SH2A.
      	(sdivsi3, udivsi3): Remove SH4 check and always compile these functions.
      
      	PR target/49880
      	* gcc.target/sh/pr49880-1.c: New.
      	* gcc.target/sh/pr49880-2.c: New.
      	* gcc.target/sh/pr49880-3.c: New.
      	* gcc.target/sh/pr49880-4.c: New.
      	* gcc.target/sh/pr49880-5.c: New.
      
      From-SVN: r196636
      decc676e
  35. Mar 08, 2013
  36. Mar 06, 2013
    • Oleg Endo's avatar
      re PR target/56529 ([SH] Calls to __sdivsi3_i4i and __udivsi3_i4i are generated on SH2) · 8f6d1c86
      Oleg Endo authored
      	PR target/56529
      	* config/sh/sh.c (sh_option_override): Check for TARGET_DYNSHIFT
      	instead of TARGET_SH2 for call-table case.  Do not set sh_div_strategy
      	to SH_DIV_CALL_TABLE for TARGET_SH2.
      	* config.gcc (sh_multilibs): Add m2 and m2a to sh*-*-linux* multilib
      	list.
      	* doc/invoke.texi (SH options): Document mdiv= call-div1, call-fp,
      	call-table options.
      
      	PR target/56529
      	* config/sh/lib1funcs.S (udivsi3_i4i, sdivsi3_i4i): Add __SH2A__ to
      	inclusion list.
      
      From-SVN: r196484
      8f6d1c86
Loading