Jan Hubicka [Thu, 17 Apr 2014 02:43:53 +0000 (04:43 +0200)]
ipa-devirt.c (odr_type_d): Add field all_derivations_known.
* ipa-devirt.c (odr_type_d): Add field all_derivations_known.
(type_all_derivations_known_p): New predicate.
(type_all_ctors_visible_p): New predicate.
(type_possibly_instantiated_p): New predicate.
(get_odr_type): Compute all_derivations_known.
(dump_odr_type): Dump the flag.
(maybe_record_type): Cleanup.
(record_target_from_binfo): Add bases_to_consider array;
record bases for types w/o instances and skip CXX destructor.
(possible_polymorphic_call_targets_1): Add bases_to_consider
and consider_construction parameters; check if type may
have instance.
(get_polymorphic_call_info): Set maybe_in_construction to true
when we know nothing.
(record_targets_from_bases): Skip CXX destructors; they are
never called for types in construction.
(possible_polymorphic_call_targets): Do not record target when
type may not have instance.
PR c++/60764
* call.c (build_user_type_coversion): Use build_dummy_object
to create the placeholder object for a constructor method call.
(build_special_member_call): Likewise.
(build_over_call): Check for the placeholder object with
is_dummy_object.
(build_new_method_call_1): Likewise. Don't attempt to resolve
a dummy object for a constructor method call.
Eric Botcazou [Wed, 16 Apr 2014 10:50:58 +0000 (10:50 +0000)]
tree-ssa-operands.c (create_vop_var): Set DECL_IGNORED_P.
* tree-ssa-operands.c (create_vop_var): Set DECL_IGNORED_P.
(append_use): Run at -O0.
(append_vdef): Likewise.
* tree-ssa-ter.c (ter_is_replaceable_p): Do not special-case -O0.
* tree-ssa-uninit.c (warn_uninitialized_vars): Remove obsolete comment.
Jakub Jelinek [Wed, 16 Apr 2014 09:25:52 +0000 (11:25 +0200)]
re PR tree-optimization/60844 (ICE in reassoc_stmt_dominates_stmt_p)
PR tree-optimization/60844
* tree-ssa-reassoc.c (reassoc_remove_stmt): New function.
(propagate_op_to_single_use, remove_visited_stmt_chain,
linearize_expr, repropagate_negates, reassociate_bb): Use it
instead of gsi_remove.
Correctly detect native TLS support with 64-bit gas on Solaris/x86 (PR target/60817)
PR target/60817
* configure.ac (set_have_as_tls): Merge i[34567]86-*-* and
x86_64-*-* cases.
Pass necessary as flags on 64-bit Solaris/x86.
Use lowercase relocs for x86_64-*-*.
* configure: Regenerate.
Jonathan Wakely [Tue, 15 Apr 2014 19:05:52 +0000 (20:05 +0100)]
container.cc: Do not use uninitialized members in mem-initializers.
* testsuite/24_iterators/insert_iterator/requirements/container.cc: Do
not use uninitialized members in mem-initializers.
* testsuite/ext/throw_value/cons.cc: Fix most vexing parse.
* testsuite/util/testsuite_common_types.h: Update comment.
Bill Schmidt [Tue, 15 Apr 2014 18:20:01 +0000 (18:20 +0000)]
re PR target/60839 (PowerPC: internal compiler error: in extract_insn, at recog.c:2154)
2014-04-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/60839
Revert following patch
2014-04-02 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs. Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.
* config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
since the FMOVE64 type is DFmode/DDmode. If TARGET_E500_DOUBLE,
specifically allow DDmode, since that does not use the SPE SIMD
instructions.
Mark Wielaard [Tue, 15 Apr 2014 17:18:20 +0000 (17:18 +0000)]
Add DW_AT_const_value as unsigned or int depending on type and value used.
As the comment in the code already indicated DWARF2 does provide
DW_FORM_sdata/DW_FORM_udata to represent signed/unsigned data.
Enumeration constants wider than HOST_WIDE_INT are already handled
separately. Those constant values that do fit a HOST_WIDE_INT can
be encoded as signed or unsigned depending on type and value for
more efficient encoding.
* dwarf2out.c (gen_enumeration_type_die): Add DW_AT_const_value
as unsigned or int depending on type and value used.
Jonathan Wakely [Tue, 15 Apr 2014 15:25:52 +0000 (16:25 +0100)]
re PR libstdc++/60594 (std::function of a type with a declared (but not defined) return type fails to compile)
PR libstdc++/60594
* include/std/functional (function::_Callable): Exclude own type
from the callable checks.
* testsuite/20_util/function/60594.cc: New.
Richard Biener [Tue, 15 Apr 2014 12:56:16 +0000 (12:56 +0000)]
common.opt (lto_partition_model): New enum.
2014-04-15 Richard Biener <rguenther@suse.de>
* common.opt (lto_partition_model): New enum.
(flto-partition=): Merge separate options with a single with argument,
add -flto-partition=one support.
* flag-types.h (enum lto_partition_model): Declare.
* opts.c (finish_options): Remove duplicate -flto-partition=
option check.
* lto-wrapper.c (run_gcc): Adjust.
lto/
* lto.c: Include params.h.
(do_whole_program_analysis): Switch on flag_lto_partition value,
add support for LTO_PARTITION_ONE.
* lto-partition.h (lto_balanced_map): Adjust.
* lto-partition.c (lto_balanced_map): Get number of desired
partitions as argument to support -flto-partition=one.
Eric Botcazou [Tue, 15 Apr 2014 09:23:21 +0000 (09:23 +0000)]
decl.c (gnat_to_gnu_entity): Create a mere scalar constant instead of a reference for renaming of scalar literal.
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Create a mere
scalar constant instead of a reference for renaming of scalar literal.
Do not create a new object for constant renaming except for a function
call. Make sure a VAR_DECL is created for the renaming pointer.
* gcc-interface/trans.c (constant_decl_with_initializer_p): New.
(fold_constant_decl_in_expr): New function.
(Identifier_to_gnu): Use constant_decl_with_initializer_p.
For a constant renaming, try to fold a constant DECL in the result.
(lvalue_required_p) <N_Object_Renaming_Declaration>: Always return 1.
(Identifier_to_gnu): Reference the renamed object of constant renaming
pointers directly.
(Case_Statement_to_gnu): Do not re-fold the bounds of integer types.
Assert that the case values are constant.
* gcc-interface/utils.c (invalidate_global_renaming_pointers): Do not
invalidate constant renaming pointers.
Co-Authored-By: Pierre-Marie de Rodat <derodat@adacore.com>
From-SVN: r209411
Eric Botcazou [Tue, 15 Apr 2014 08:59:12 +0000 (08:59 +0000)]
utils.c (type_for_vector_element_p): New predicate.
* gcc-interface/utils.c (type_for_vector_element_p): New predicate.
(build_vector_type_for_size): New function.
(build_vector_type_for_array): Likewise.
(unchecked_convert): Build an intermediate vector type to convert
from a generic array type to a vector type.
(handle_vector_size_attribute): Reimplement.
(handle_vector_type_attribute): Likewise.
Richard Biener [Tue, 15 Apr 2014 08:08:06 +0000 (08:08 +0000)]
tree.c (iterative_hash_expr): Use enum tree_code_class to store TREE_CODE_CLASS.
2014-04-15 Richard Biener <rguenther@suse.de>
* tree.c (iterative_hash_expr): Use enum tree_code_class
to store TREE_CODE_CLASS.
(tree_block): Likewise.
(tree_set_block): Likewise.
* tree.h (fold_build_pointer_plus_loc): Use
convert_to_ptrofftype_loc.
user: Chris Manghane <cmang@golang.org>
date: Mon Mar 17 13:12:32 2014 -0700
files: go/backend.h go/expressions.cc go/expressions.h go/runtime.def
description:
compiler: Use backend interface for call expressions.
user: Chris Manghane <cmang@golang.org>
date: Wed Mar 12 13:34:27 2014 -0700
files: go/expressions.cc go/expressions.h go/gogo-tree.cc go/statements.cc
description:
compiler: Use backend interface map construction.
user: Chris Manghane <cmang@golang.org>
date: Tue Mar 11 12:53:06 2014 -0700
files: go/backend.h go/expressions.cc go/gogo-tree.cc go/gogo.h
description:
compiler: Use backend interface for string expressions.
user: Chris Manghane <cmang@golang.org>
date: Sat Mar 08 15:56:59 2014 -0800
files: go/backend.h go/expressions.cc go/expressions.h
description:
compiler: Use backend interface for array and string indexing.
user: Chris Manghane <cmang@golang.org>
date: Fri Mar 07 16:02:18 2014 -0800
files: go/expressions.cc
description:
compiler: Use backend interface for constant expressions.
user: Chris Manghane <cmang@golang.org>
date: Thu Mar 06 16:00:18 2014 -0800
files: go/expressions.cc
description:
compiler: Use backend interface for struct construction.
user: Chris Manghane <cmang@golang.org>
date: Wed Mar 05 13:09:37 2014 -0800
files: go/expressions.cc
description:
compiler: Use backend interface for type conversions.
user: Chris Manghane <cmang@golang.org>
date: Tue Mar 04 07:03:47 2014 -0800
files: go/expressions.cc go/expressions.h go/gogo-tree.cc go/gogo.h go/runtime.def libgo/runtime/chan.c
description:
compiler: Use backend interface for channel receive.
user: Chris Manghane <cmang@golang.org>
date: Mon Mar 03 15:18:57 2014 -0800
files: go/backend.h go/expressions.cc go/runtime.def
description:
compiler: Use backend interface for builtin calls.
user: Chris Manghane <cmang@golang.org>
date: Mon Mar 03 07:44:35 2014 -0800
files: go/expressions.cc go/expressions.h go/types.cc go/types.h
description:
compiler: Use backend interface for string info.
user: Chris Manghane <cmang@golang.org>
date: Fri Feb 28 10:45:55 2014 -0800
files: go/expressions.cc go/expressions.h go/gogo-tree.cc go/statements.cc
description:
compiler: Use backend interface for map indexing.
user: Chris Manghane <cmang@golang.org>
date: Wed Feb 26 14:13:10 2014 -0800
files: go/expressions.cc go/expressions.h
description:
compiler: Use backend interface for slice value expressions.
user: Chris Manghane <cmang@golang.org>
date: Wed Feb 26 13:12:19 2014 -0800
files: go/backend.h go/expressions.cc go/expressions.h go/gogo-tree.cc go/runtime.def go/statements.cc
description:
compiler: Use backend interface for interface values.
user: Chris Manghane <cmang@golang.org>
date: Mon Feb 24 12:30:13 2014 -0800
files: go/expressions.cc go/expressions.h go/parse.cc go/statements.cc
description:
compiler: Change Heap_composite_expression to Heap_expression.
user: Chris Manghane <cmang@golang.org>
date: Thu Feb 20 19:47:06 2014 -0800
files: go/expressions.cc go/expressions.h go/gogo-tree.cc go/gogo.cc go/gogo.h go/types.cc go/types.h
description:
compiler: Use backend interface for interface method table expressions.
user: Chris Manghane <cmang@golang.org>
date: Mon Feb 03 14:36:20 2014 -0800
files: go/expressions.cc go/expressions.h
description:
compiler: Add compound expressions to the frontend.
* go-gcc.cc: Include "convert.h".
(Gcc_backend::string_constant_expression): New function.
(Gcc_backend::real_part_expression): Likewise.
(Gcc_backend::imag_part_expression): Likewise.
(Gcc_backend::complex_expression): Likewise.
(Gcc_backend::constructor_expression): Likewise.
(Gcc_backend::array_constructor_expression): Likewise.
(Gcc_backend::pointer_offset_expression): Likewise.
(Gcc_backend::array_index_expression): Likewise.
(Gcc_backend::call_expression): Likewise.
(Gcc_backend::exception_handler_statement): Likewise.
(Gcc_backend::function_defer_statement): Likewise.
(Gcc_backend::function_set_parameters): Likewise.
(Gcc_backend::function_set_body): Likewise.
(Gcc_backend::convert_expression): Handle various type
conversions.
H.J. Lu [Mon, 14 Apr 2014 16:49:24 +0000 (16:49 +0000)]
Check optimize_insn_for_speed_p in *fixuns_trunc<mode>_1
Since fixuns_trunc<mode>si2 expander checks optimize_insn_for_size_p
before generating *fixuns_trunc<mode>_1, we should use
optimize_insn_for_speed_p in *fixuns_trunc<mode>_1 for consistency.
PR target/60827
* config/i386/i386.md (*fixuns_trunc<mode>_1): Check
optimize_insn_for_speed_p instead of
optimize_function_for_speed_p.
Jonathan Wakely [Mon, 14 Apr 2014 14:51:35 +0000 (15:51 +0100)]
Limit operations on vector::pointer to NullablePointer requirements.
* include/bits/stl_vector.h (_Vector_base::_Vector_impl,
_Vector_base::_M_allocate): NullablePointer requirements do not
include initialization from literal zero, use value-initialization.
* include/bits/vector.tcc (vector::_M_insert_aux,
vector::_M_explace_back_aux): Likewise for assignment.
Eric Botcazou [Mon, 14 Apr 2014 14:18:26 +0000 (14:18 +0000)]
snames.ads-tmpl (Name_Ivdep): New pragma-related name.
* snames.ads-tmpl (Name_Ivdep): New pragma-related name.
* sem_prag.adb (Analyze_Pragma) <Pragma_Loop_Optimize>: Add support
for Ivdep hint.
* gnat_rm.texi (Implementation Defined Pragmas): Document new Ivdep
hint for Loop_Optimize.
* gnat_ugn.texi (Vectorization of loops): Mention new Ivdep hint.
* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Loop_Optimize>: Deal
with new Ivdep hint.
* gcc-interface/ada-tree.h (LOOP_STMT_IVDEP): New macro.
* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Loop_Optimize>: Deal
with new Ivdep hint.
(gnat_gimplify_stmt) <LOOP_STMT>: Propagate the loop hints.
Richard Biener [Mon, 14 Apr 2014 13:57:00 +0000 (13:57 +0000)]
re PR tree-optimization/60042 (vectorizer still does too many dependence tests for himeno:jacobi)
2014-04-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/60042
* tree-ssa-pre.c (inhibit_phi_insertion): Remove.
(insert_into_preds_of_block): Do not prevent PHI insertion
for REFERENCE exprs here ...
(eliminate_dom_walker::before_dom_children): ... but prevent
their use here under similar conditions when applied to the
IL after PRE optimizations.
Eric Botcazou [Mon, 14 Apr 2014 13:51:42 +0000 (13:51 +0000)]
opt.ads (Suppress_Back_Annotation): Remove as unused.
* opt.ads (Suppress_Back_Annotation): Remove as unused.
* fe.h (Back_Annotate_Rep_Info): Likewise.
(Global_Discard_Names): Likewise.
(List_Representation_Info): Declare.
* types.h (Uint_Minus_1): Likewise.
* repinfo.ads: Document back-annotation change.
* gcc-interface/gigi.h (init_gnat_decl): Declare.
(destroy_gnat_decl): Likewise.
* gcc-interface/decl.c (annotate_value): Do not create the cache of
annotated values here but...
<CALL_EXPR>: Only inline the call if -gnatR3 is specified or we are
in ASIS mode.
(init_gnat_decl): ...here instead. New function.
(destroy_gnat_decl): Likewise.
* gcc-interface/trans.c (gigi): Call {init|destroy}_gnat_decl.
* gcc-interface/utils.c (init_gnat_utils): Minor reformatting.
Co-Authored-By: Robert Dewar <dewar@adacore.com>
From-SVN: r209371
Eric Botcazou [Mon, 14 Apr 2014 13:33:23 +0000 (13:33 +0000)]
stor-layout.c (place_field): Finalize non-constant offset for the field, if any.
* stor-layout.c (place_field): Finalize non-constant offset for the
field, if any.
ada/
* gcc-interface/decl.c (create_field_decl_from): Finalize non-constant
offset for the field, if any.
Richard Biener [Mon, 14 Apr 2014 11:48:22 +0000 (11:48 +0000)]
tree-switch-conversion.c (lshift_cheap_p): Get speed_p as argument.
2014-04-14 Richard Biener <rguenther@suse.de>
* tree-switch-conversion.c (lshift_cheap_p): Get speed_p
as argument.
(expand_switch_using_bit_tests_p): Likewise.
(process_switch): Compute and pass on speed_p based on the
switch stmt.
* tree-ssa-math-opts.c (gimple_expand_builtin_pow): Use
optimize_bb_for_speed_p.
Richard Biener [Mon, 14 Apr 2014 08:35:22 +0000 (08:35 +0000)]
re PR lto/60720 (clisp fails to build with -flto: internal compiler error: tree check: expected array_type, have record_type in array_ref_low_bound, at expr.c:6941)
2014-04-14 Richard Biener <rguenther@suse.de>
PR lto/60720
* lto-streamer-out.c (wrap_refs): New function.
(lto_output): Wrap symbol references in global initializes in
type-preserving MEM_REFs.
* gcc.dg/lto/pr60720_0.c: New testcase.
* gcc.dg/lto/pr60720_1.c: Likewise.
Richard Biener [Mon, 14 Apr 2014 08:09:06 +0000 (08:09 +0000)]
re PR tree-optimization/59817 (ICE in extract_affine_chrec with -O2 -ftree-loop-linear)
2014-04-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/59817
PR tree-optimization/60453
* graphite-scop-detection.c (graphite_can_represent_scev): Complete
recursion to catch all CHRECs in the scalar evolution and restrict
the predicate for the remains appropriately.
* gfortran.dg/graphite/pr59817.f: New testcase.
* gcc.dg/graphite/pr59817-1.c: Likewise.
* gcc.dg/graphite/pr59817-2.c: Likewise.
Paul Thomas [Sun, 13 Apr 2014 11:58:55 +0000 (11:58 +0000)]
re PR fortran/58085 (Wrong indexing of an array in ASSOCIATE)
2014-04-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/58085
PR fortran/60717
* trans.h: Add 'use_offset' bitfield to gfc_se.
* trans-array.c (gfc_conv_expr_descriptor): Use 'use_offset'
as a trigger to unconditionally recalculate the offset for
array slices and constant arrays.
trans-expr.c (gfc_conv_intrinsic_to_class): Use it.
trans-stmt.c (trans_associate_var): Ditto.
(gfc_conv_procedure_call): Ditto.
2014-04-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/60717
* gfortran.dg/unlimited_polymorphic_17.f90: New test.
PR fortran/58085
* gfortran.dg/associate_15.f90: New test.
* common/config/epiphany/epiphany-common.c
(epiphany_option_optimization_table): Enable section anchors by
default at -O1 or higher.
* config/epiphany/epiphany.c (TARGET_MAX_ANCHOR_OFFSET): Define.
(TARGET_MIN_ANCHOR_OFFSET): Likewise.
(epiphany_rtx_costs) <SET>: For binary operators, the set as such
carries no extra cost.
(epiphany_legitimate_address_p): For BLKmode, apply SImode check.
* config/epiphany/epiphany.h (ASM_OUTPUT_DEF): Define.
* config/epiphany/predicates.md (memclob_operand): New predicate.
* config/epiphany/epiphany.md (stack_adjust_add, stack_adjust_str):
Use memclob_operand predicate and X constraint for operand 3.
gcc/testsuite:
* gcc.target/epiphany/t1068-2.c: New file.
epiphany.c (epiphany_rtx_cost): Compare with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for its operands.
gcc:
* config/epiphany/epiphany.c (epiphany_rtx_cost): Compare
with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for
its operands.
gcc/testsuite:
* gcc.target/epiphany/btst-1.c: New test.