Age | Commit message (Collapse) | Author | Files | Lines |
|
From-SVN: r271105
|
|
Darwin uses an out of line save when complete context
needs to be saved, including the vector regs.
This patch prints the status of that when -mdebug=stack
is given.
gcc/
2019-05-12 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/rs6000.c (debug_stack_info): When -mdebug=stack
is given, print the state of the EH "save world" computation for
Darwin.
From-SVN: r271101
|
|
One should not provide test_text for wrap style fixes
this was causing the test to fail. No change to the
actual fix.
2019-05-11 Iain Sandoe <iain@sandoe.co.uk>
PR target/90379
PR bootstrap/89864
* inclhack.def (darwin_ucred__Atomic): Do not supply test_text
for wrap fixes.
* fixincl.x: Regenerated.
From-SVN: r271098
|
|
The tests fail because Darwin indirects common accesses which causes different
codegen and the mismatch in output. Placing the vars in regular .data section
fixes that.
gcc/testsuite/
2019-05-11 Iain Sandoe <iain@sandoe.co.uk>
PR testsuite/81058
* gcc.target/i386/avx512bw-vpmovswb-1.c: Use regular data section
for variables on Darwin, rather than common.
* gcc.target/i386/avx512bw-vpmovuswb-1.c: Likewise.
* gcc.target/i386/avx512bw-vpmovwb-1.c: Likewise.
From-SVN: r271097
|
|
_Bit_iterator_base&)): Make hidden friend.
2019-05-11 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_bvector.h
(operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Make hidden friend.
(operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Bit_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
(_Bit_const_iterator::operator+(difference_type)): Likewise and allow
NRVO copy elision.
(_Bit_const_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
From-SVN: r271096
|
|
cout)
PR c++/59813
* config/aarch64/aarch64.c (aarch64_expand_epilogue): Don't add
EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.
From-SVN: r271093
|
|
* config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm):
Use pinsrd for TARGET_SSE4_1.
* config/i386/sse.md (movdi_to_sse): Ditto.
From-SVN: r271092
|
|
return error_mark_node.
/cp
2019-05-11 Paolo Carlini <paolo.carlini@oracle.com>
* typeck.c (cp_build_function_call_vec): When mark_used fails
unconditionally return error_mark_node.
/testsuite
2019-05-11 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C: New.
* g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C: Likewise.
From-SVN: r271091
|
|
runtime.throw needs a g to work properly. Set up g early, to
ensure that if something goes wrong in the runtime startup (e.g.
runtime.check fails), the program terminates in a reasonable way.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176657
From-SVN: r271088
|
|
From-SVN: r271087
|
|
The test uses remove_pointer because in most cases native_handle_type is
a pointer to the actual type that the C++ class contains. However, for
std::thread, native_handle_type is the same type as the type contained
in std::thread, and so remove_pointer is not needed. On targets where
pthread_t is a pointer type remove_pointer<native_handle_type> is not a
no-op, instead it transforms pthread_t and causes the test to fail.
The fix is to not apply remove_pointer when testing std::thread.
PR libstdc++/81266
* testsuite/util/thread/all.h: Do not use remove_pointer for
std::thread::native_handle_type.
From-SVN: r271080
|
|
Clang diagnoses the inconsistent noexcept-specifier on the friend
declaration of __get. Add it, and also on __get_storage.
PR libstdc++/90397
* include/std/variant (_Variant_storage<false, Types...>::_M_storage())
(_Variant_storage<true, Types...>::_M_reset()))
(_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
(__get_storage): Likewise.
(variant): Add noexcept to friend declarations for __get and
__get_storage.
From-SVN: r271079
|
|
A disabled specialization should not be callable, so move the function
call operator into a new base class which correctly implements the
disabled hash semantics. For the versioned namespace configuration do
not derive from __poison_hash in the enabled case, as the empty base
class serves no purpose but potentially increases the object size. For
the default configuration that base class must be kept, to preserve
layout.
An enabled specialization should not be unconditionally noexcept,
because the underlying hash object might throw.
PR libstdc++/90388
* include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
Use _Require for constraints.
(operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
per the standard.
(__uniq_ptr_hash): New base class with conditionally-disabled call
operator.
(hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
* testsuite/20_util/unique_ptr/hash/90388.cc: New test.
From-SVN: r271078
|
|
* include/bits/shared_ptr.h: Improve docs.
* include/bits/shared_ptr_base.h: Likewise.
* include/bits/stl_uninitialized.h: Likewise.
* include/bits/unique_ptr.h: Likewise.
* libsupc++/new: Likewise.
From-SVN: r271077
|
|
vtable for TYPE(*) / BT_ASSUMED_TYPE)
2019-05-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/61968
* interface.c (compare_actual_formal): Do not create a vtab if
the actual argument is assumed type.
2019-05-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/61968
* gfortran.dg/assumed_type_10.f90: New test case.
* gfortran.dg/assumed_type_11.f90: New test case.
From-SVN: r271076
|
|
From-SVN: r271075
|
|
This does not permit any new inlinable functions in the standard library.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176637
From-SVN: r271074
|
|
Darwin will build these tests and run them if/when it's
available on the relevant hardware.
2019-05-10 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is
now tested.
* gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New.
From-SVN: r271073
|
|
as a global variable.
/cp
2019-05-10 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokvardecl): Use an accurate location in error message
about main as a global variable.
/testsuite
2019-05-10 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/main1.C: New.
From-SVN: r271070
|
|
2019-05-10 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
* cp-gimplify.c (cp_fold): Likewise.
* cp-objcp-common.c (cp_type_dwarf_attribute): Likewise.
* cp-tree.h (TYPE_OBJ_P, TYPE_PTROBV_P): Likewise.
* cvt.c (perform_qualification_conversions): Likewise.
* decl.c (grokdeclarator): Likewise.
* decl2.c (build_memfn_type): Likewise.
* mangle.c (canonicalize_for_substitution, write_type): Likewise.
* parser.c (cp_parser_omp_declare_reduction): Likewise.
* pt.c (check_explicit_specialization, uses_deducible_template_parms,
check_cv_quals_for_unify, dependent_type_p_r): Likewise.
* rtti.c (ptr_initializer): Likewise.
* semantics.c (finish_asm_stmt, finish_offsetof,
cp_check_omp_declare_reduction): Likewise.
* tree.c (cp_build_qualified_type_real,
cp_build_type_attribute_variant, cxx_type_hash_eq,
cxx_copy_lang_qualifiers, cp_free_lang_data): Likewise.
* typeck.c (structural_comptypes, convert_arguments,
cp_build_addr_expr_1, unary_complex_lvalue, cp_build_c_cast,
cp_build_modify_expr, comp_ptr_ttypes_real, type_memfn_rqual):
Likewise.
From-SVN: r271069
|
|
* class.c (check_for_override): Don't warn for final functions.
* g++.dg/warn/Wsuggest-override-2.C: New test.
From-SVN: r271065
|
|
This adds all of two inlinable functions to the standard library:
crypto/subtle.ConstantTimeLessOrEq, regexp.(*Regexp).Copy.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176378
From-SVN: r271063
|
|
2019-05-10 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
(do_rpo_vn): Initialize next_value_id.
From-SVN: r271061
|
|
2019-05-10 Martin Liska <mliska@suse.cz>
* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
Fix plural form.
From-SVN: r271060
|
|
real_cst in transform_to_exit_first_loop_alt, at tree-parloops.c:1772)
PR tree-optimization/90385
* tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME
arguments of the exit phis.
* gfortran.dg/pr90385.f90: New test.
From-SVN: r271059
|
|
operators for types with trailing padding. (Again))
PR c++/90383
* tree-inline.h (struct copy_body_data): Add do_not_fold member.
* tree-inline.c (remap_gimple_op_r): Avoid folding expressions if
id->do_not_fold.
(copy_tree_body_r): Likewise.
(copy_fn): Set id.do_not_fold to true.
* g++.dg/cpp1y/constexpr-90383-1.C: New test.
* g++.dg/cpp1y/constexpr-90383-2.C: New test.
From-SVN: r271058
|
|
identified as PRESENT)
2019-05-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/90093
* trans-decl.c (convert_CFI_desc): Test that the dummy is
present before doing any of the conversions.
PR fortran/90352
* decl.c (gfc_verify_c_interop_param): Restore the error for
charlen > 1 actual arguments passed to bind(C) procs.
Clean up trailing white space.
PR fortran/90355
* trans-array.c (gfc_trans_create_temp_array): Set the 'span'
field to the element length for all types.
(gfc_conv_expr_descriptor): The force_no_tmp flag is used to
prevent temporary creation, especially for substrings.
* trans-decl.c (gfc_trans_deferred_vars): Rather than assert
that the backend decl for the string length is non-null, use it
as a condition before calling gfc_trans_vla_type_sizes.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp'
is set before calling gfc_conv_expr_descriptor.
* trans.c (get_array_span): Move the code for extracting 'span'
from gfc_build_array_ref to this function. This is specific to
descriptors that are component and indirect references.
* trans.h : Add the force_no_tmp flag bitfield to gfc_se.
2019-05-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/90093
* gfortran.dg/ISO_Fortran_binding_12.f90: New test.
* gfortran.dg/ISO_Fortran_binding_12.c: Supplementary code.
PR fortran/90352
* gfortran.dg/iso_c_binding_char_1.f90: New test.
PR fortran/90355
* gfortran.dg/ISO_Fortran_binding_4.f90: Add 'substr' to test
the direct passing of substrings as descriptors to bind(C).
* gfortran.dg/assign_10.f90: Increase the tree_dump count of
'atmp' to account for the setting of the 'span' field.
* gfortran.dg/transpose_optimization_2.f90: Ditto.
From-SVN: r271057
|
|
PR tree-optimization/88709
PR tree-optimization/90271
* gcc.dg/store_merging_29.c: Allow 4 stores to replace 6 stores on
arm*-*-*.
From-SVN: r271056
|
|
PR pch/90326
cp/
* config-lang.in (gtfiles): Remove c-family/c-lex.c, add
c-family/c-cppbuiltin.c.
objc/
* config-lang.in (gtfiles): Add c-family/c-format.c.
objcp/
* config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c.
testsuite/
* g++.dg/pch/pr90326.C: New test.
* g++.dg/pch/pr90326.Hs: New file.
From-SVN: r271055
|
|
2019-05-10 Martin Liska <mliska@suse.cz>
* config/i386/i386-expand.c (ix86_expand_floorceildf_32):
Reapply changes from r269790.
From-SVN: r271054
|
|
2019-05-10 Martin Liska <mliska@suse.cz>
PR middle-end/90340
* doc/invoke.texi: New params.
* params.def (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE): New.
(PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED): Likewise.
* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
Use it.
* tree-switch-conversion.h (struct jump_table_cluster):
Likewise.
2019-05-10 Martin Liska <mliska@suse.cz>
PR middle-end/90340
* gcc.dg/tree-ssa/pr90340-2.c: New test.
* gcc.dg/tree-ssa/pr90340.c: New test.
From-SVN: r271053
|
|
2019-05-10 Martin Liska <mliska@suse.cz>
* Make-lang.in: Use program_transform_name for lto-dump.
* config-lang.in: Do not mark lto-dump compiler as we don't
want to have it installed at
lib/gcc/x86_64-pc-linux-gnu/10.0.0/lto-dump.
From-SVN: r271052
|
|
From-SVN: r271051
|
|
On all targets I managed to test (21) this results in better code. Only
alpha ends up with slightly bigger code.
* combine.c (combine_simplify_rtx): Don't make IF_THEN_ELSE RTL.
From-SVN: r271047
|
|
From-SVN: r271045
|
|
If a string([]byte) conversion is used immediately as a key for a
map read, we don't need to copy the backing store of the byte
slice, as mapaccess does not keep a reference to it.
The gc compiler does more than this: it also avoids the copy if
the map key is a composite literal that contains the conversion
as a field, like, T{ ... { ..., string(b), ... }, ... }. For now,
we just optimize the simple case, which is probably most common.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176197
* go.dg/mapstring.go: New test.
From-SVN: r271044
|
|
2019-05-09 Bill Schmidt <wschmidt@linux.ibm.com>
* doc/loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.
From-SVN: r271042
|
|
PR rtl-optimization/88879
* sel-sched.c (sel_target_adjust_priority): Remove assert.
From-SVN: r271039
|
|
This time really add the test.
gcc/testsuite:
PR target/90405
* gcc.target/arm/pr90405.c: New test.
From-SVN: r271037
|
|
-mtpcs-leaf-frame causes an APCS-style backtrace frame to be created
on the stack. This should probably be deprecated, but it did reveal
an issue with the patch I committed previously to improve the code
generation when pushing high registers, in that
thumb_find_work_register had a different idea as to which registers
were available as scratch registers.
The new code actually does a better job of finding a viable work
register and doesn't rely so much on assumptions about the ABI, so it
seems better to adapt thumb_find_work_register to the new approach.
This way we can eliminate some rather crufty code.
gcc:
PR target/90405
* config/arm/arm.c (callee_saved_reg_p): Move before
thumb_find_work_register.
(thumb1_prologue_unused_call_clobbered_lo_regs): Move before
thumb_find_work_register. Only call df_get_live_out once.
(thumb1_epilogue_unused_call_clobbered_lo_regs): Likewise.
(thumb_find_work_register): Use
thumb1_prologue_unused_call_clobbered_lo_regs instead of ad hoc
algorithms to locate a spare call clobbered reg.
gcc/testsuite:
PR target/90405
* gcc.target/arm/pr90405.c: New test.
From-SVN: r271036
|
|
2019-05-09 Martin Liska <mliska@suse.cz>
* gimple-pretty-print.c (dump_binary_rhs): Dump MIN_EXPR
and MAX_EXPR in GIMPLE FE format.
2019-05-09 Martin Liska <mliska@suse.cz>
* gimple-parser.c (c_parser_gimple_statement): Support __MIN and
__MAX.
(c_parser_gimple_unary_expression): Parse also binary expression
__MIN and __MAX.
(c_parser_gimple_parentized_binary_expression): New function.
2019-05-09 Martin Liska <mliska@suse.cz>
* gcc.dg/gimplefe-39.c: New test.
From-SVN: r271035
|
|
2019-05-09 Martin Liska <mliska@suse.cz>
* tree-cfg.c (dump_function_to_file): Dump entry BB count.
* gimple-pretty-print.c (dump_gimple_bb_header):
Dump BB count.
(pp_cfg_jump): Dump edge probability.
* profile-count.c (profile_quality_as_string): Simplify
with a static array.
(parse_profile_quality): New function.
(profile_count::dump): Simplify with a static array.
(profile_count::from_gcov_type): Add new argument.
* profile-count.h (parse_profile_quality): Likewise.
* predict.h (set_hot_bb_threshold): New.
* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
New param.
* predict.c (get_hot_bb_threshold): Set from the new param.
(set_hot_bb_threshold): New.
2019-05-09 Martin Liska <mliska@suse.cz>
* gimple-parser.c (struct gimple_parser): Add probability.
for gimple_parser_edge.
(gimple_parser::push_edge): Add new argument probability.
(c_parser_gimple_parse_bb_spec): Parse also probability
if present.
(c_parser_parse_gimple_body): Set edge probability.
(c_parser_gimple_compound_statement): Consume token
before calling c_parser_gimple_goto_stmt.
Parse BB counts.
(c_parser_gimple_statement): Pass new argument.
(c_parser_gimple_goto_stmt): Likewise.
(c_parser_gimple_if_stmt): Likewise.
(c_parser_gimple_or_rtl_pass_list): Parse hot_bb_threshold.
* c-parser.c (c_parser_declaration_or_fndef): Pass
hot_bb_threshold argument.
* c-tree.h (struct c_declspecs): Add hot_bb_threshold
field.
(c_parser_gimple_parse_bb_spec_edge_probability): New.
2019-05-09 Martin Liska <mliska@suse.cz>
* gcc.dg/gimplefe-37.c: New test.
* gcc.dg/gimplefe-33.c: Likewise.
From-SVN: r271034
|
|
* Fix last ChangeLog entry.
From-SVN: r271033
|
|
libcpp/line-map.c:1061)
/cp
2019-05-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/90382
Revert:
2018-04-26 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
min_location.
/testsuite
2019-05-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/90382
2018-04-26 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/trailing1.C: New.
From-SVN: r271032
|
|
cannot throw but has an EH edge))
2019-05-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/90395
* tree-ssa-forwprop.c (pass_forwprop::execute): Do not
rewrite vector stores that throw internally.
* gcc.dg/torture/pr90395.c: New testcase.
From-SVN: r271031
|
|
..., which was forgotten in recent r268844.
gcc/
* cif-code.def (CHKP): Remove.
From-SVN: r271029
|
|
The recent trunk r270914 for PR89221 "--enable-frame-pointer does not work as
intended" fixed a scripting defect in the x86 '--enable-frame-pointer'
handling.
This has the side effect that, for example, for '--target=i686-gnu' this is now
enabled by default: 'USE_IX86_FRAME_POINTER=1' is added to 'tm_defines'. Given
that it's highly unlikely that anyone would now suddenly want
'--enable-frame-pointer' as the default for any kind of GNU system, I'm
changing the default back for GNU systems, to match that of a 'target_os' of
'linux* | darwin[8912]*'.
gcc/
PR target/89221
* configure.ac (--enable-frame-pointer): Disable by default for
GNU systems.
* configure: Regenerate.
From-SVN: r271028
|
|
_Deque_iterator<>&)): Make hidden friend.
2019-05-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_deque.h
(operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Make hidden friend.
(operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Deque_iterator<>::operator-(difference_type)): Likewise.
From-SVN: r271027
|
|
From-SVN: r271026
|
|
This patch makes a number of corrections to rs6000_register_move_cost,
adds a new register union class, GEN_OR_VSX_REGS, and adjusts insn
alternative costs to suit.
The patch initially just corrected register move cost when direct
moves are available, but that resulted in regressions. Inspection of
those regressions showed ALL_REGS being used as the register allocno
class, which isn't ideal. gcc/doc/tm.texi says: "You should define a
class for the union of two classes whenever some instruction allows
both classes". Thus, define GEN_OR_VSX_REGS for the register
allocator. (IRA wants to use the union of two register classes when
the costs of the classes are below memory cost, which happens more
often with the low direct move cost.)
As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89271#c11 we ought
to be returning the minimal cost for union classes. That can be done
by rs6000_register_move_cost testing for vsx first, where the number
of regs for a given mode might be smaller than the same mode in gprs,
and changing the LINK_OR_CTR_REGS case to exclude SPEC_OR_GEN_REGS and
NON_FLOAT_REGS.
I removed the VECTOR_MEM_VSX_P test since that leads to silly results
for scalar mode moves between altivec and float when TARGET_VSX. eg.
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=FLOAT_REGS
rs6000_register_move_cost:, ret=16, mode=DF, from=FLOAT_REGS, to=ALTIVEC_REGS
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=VSX_REGS
The patch also fixes wrong results for moves within and between any of
the non-gpr, non-vsx special reg classes. The comment about "moving
between two similar registers is just one instruction" is false. We
can't move lr to ctr directly, for example. I believe the intent of
the "reg_classes_intersect_p (to, from)" was to cover moves within
float or altivec, so I moved that test inside the code handling vsx,
and made sure the intersection wasn't anything besides vsx by masking
off everything else. Masking isn't strictly necessary at the moment,
but would be if we create a GEN_OR_ALTIVEC_REGS class some time in the
future.
TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS is needed for rs6000 in order
to fix the 20% cactus_adm spec regression when using GEN_OR_VSX_REGS
as an allocno class. It is similar to the aarch64 version but without
any selection by regno mode if the best class is a union class.
PR target/89271
* config/rs6000/rs6000.h (enum reg_class, REG_CLASS_NAMES),
(REG_CLASS_CONTENTS): Add GEN_OR_VSX_REGS class.
* config/rs6000/rs6000.c (rs6000_register_move_cost): Correct
cost for general <-> vsx when direct moves are available.
Cost union classes at minimal cost for any reg in the class.
Correct calculation for moves between vsx, float, and altivec.
Don't return a low cost for moves between special regs. Don't
use hard coded register numbers.
(TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define.
(rs6000_ira_change_pseudo_allocno_class): New function.
* config/rs6000/rs6000.md (movsi_internal1, mov<mode>_internal),
(movdi_internal32, movdi_internal64): Remove '*' from vsx register
alternatives.
(movsi_internal1): Don't disparage vector alternatives.
(mov<mode>_internal): Likewise, excepting alternative that
will be split.
* config/rs6000/vsx.md (vsx_splat_<mode>_reg): Don't disparage
we <- b alternative.
From-SVN: r271022
|