2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Analyze_Depends_In_Decl_Part): Add
local variable Expr. Flag clauses with extra parenthesis as this
is not allowed by the syntax of the pragma. Code reformatting.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): Alphabetize
variables. Rename variabme Tnn to Temp. Do not create a temporary
if assertions are disabled. Find enclosing routine _Postconditions
and insert the temporary that captures the value of the prefix
before the routine.
* exp_ch6.adb (Build_Postconditions_Procedure):
Insert the generated _Postconditions routine
before the first source declaration of the related
subprogram.
(Insert_After_Last_Declaration): Removed.
(Insert_Before_First_Source_Declaration): New routine.
2014-02-06 Ed Schonberg <schonberg@adacore.com>
* exp_util.adb, exp_util.ads (Within_Internal_Subprogram):
Utility to determine whether current expansion is for the body
of a predefined primitive operation.
(Make_Predicate_Check): Use Within_Internal_Subpgram
* checks.adb (Apply_Predicate_Check): Use
Within_Internal_Subprogram
* sem_ch13.adb (Freeze_Entity_Checks): Ditto.
2014-02-06 Pascal Obry <obry@adacore.com>
* prj.ads, prj-util.adb: Minor reformatting.
From-SVN: r207537
2014-02-06 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Expand_Subprogram_Contract, Append_Enabled_Item):
Take into account the Split_PPC flag to ensure that conjuncts
in a composite postcondition aspect are tested in source order.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch6.adb (Analyze_Generic_Subprogram_Body): Flag illegal
use of SPARK_Mode.
* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Flag
illegal use of SPARK_Mode.
(Instantiate_Subprogram_Body): Flag illegal use of SPARK_Mode.
* sem_prag.adb (Analyze_Pragma): Code reformatting.
* sem_util.adb Add with and use clause for Aspects.
(Check_SPARK_Mode_In_Generic): New routine.
* sem_util.ads (Check_SPARK_Mode_In_Generic): New routine.
2014-02-06 Thomas Quinot <quinot@adacore.com>
* a-calend.adb (Formatting_Operations.Split): Ensure that
Time_Error is raised for invalid time values.
From-SVN: r207536
2014-02-06 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Analyze_Pragma): Rewrite as a null statement
in GNATprove_Mode.
2014-02-06 Robert Dewar <dewar@adacore.com>
* einfo.ads, einfo.adb (Is_Discriminant_Check_Function): New flag.
* exp_ch3.adb (Build_Dcheck_Function): Set
Is_Discriminant_Check_Function.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Is_Subprogram_Call): Inspect
the original tree in certain cases where a construct has been
factored out and replaced by a reference to a temporary.
2014-02-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Process_Full_View): Fix typo in the order of
parameters when propagating predicate function to full view.
(Find_Type_Of_Object): Freeze base type of object type to catch
premature use of discriminated private type without a full view.
From-SVN: r207535
2014-02-06 Robert Dewar <dewar@adacore.com>
* sprint.adb: Minor reformatting.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch4.adb (Process_Transient_Object): Add local variable
Temp_Ins. When the transient object is initialized by an
aggregate, the hook must capture the object after the last
component assignment takes place.
* exp_ch7.adb (Detect_Subprogram_Call): Expose the subprogram to
routine Is_Subprogram_Call.
(Is_Subprogram_Call): Inspect an
aggregate that has been heavily expanded for subprogram calls.
(Process_Transient_Objects): Add local variables Expr, Ptr_Id
and Temp_Ins. Remove the nested declare block and adjust the
indentation. When the transient object is initialized by an
aggregate, the hook must capture the object after the last
component assignment takes place.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Analyze_Global_Item): Detect illegal uses of
external states with enabled properties that do not match the
global mode.
(Property_Error): New routine.
* sem_res.adb (Property_Error): New routine.
(Resolve_Actuals): Detect illegal uses of external variables with
enabled properties in procedure calls that do not match the mode of
the corresponding formal parameter.
2014-02-06 Hristian Kirtchev <kirtchev@adacore.com>
* sem_util.adb (Has_Enabled_Property): Rename
formal parameter Prop_Nam to Property. Update the comment on usage
and all occurrences in the body. Add local variable Prop_Nam. When
inspecting a property with an expression, the property name
appears as the first choice of the component association.
From-SVN: r207534
2014-02-06 Richard Biener <rguenther@suse.de>
* tree-cfg.c (gimple_duplicate_sese_region): Fix ordering of
set_loop_copy and initialize_original_copy_tables.
From-SVN: r207532
PR middle-end/60013
* ipa-inline-analysis.c (compute_bb_predicates): Ensure monotonicity
of the dataflow.
* gcc.dg/pr60013.c: New testcase.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r207529
gcc:
2014-02-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* altivec.md (UNSPEC_VPACK_UNS_UNS_MOD_DIRECT): New unspec.
(UNSPEC_VUNPACK_HI_SIGN_DIRECT): Likewise.
(UNSPEC_VUNPACK_LO_SIGN_DIRECT): Likewise.
(mulv8hi3): Use gen_altivec_vpkuwum_direct instead of
gen_altivec_vpkuwum.
(altivec_vpkpx): Test for VECTOR_ELT_ORDER_BIG instead of for
BYTES_BIG_ENDIAN.
(altivec_vpks<VI_char>ss): Likewise.
(altivec_vpks<VI_char>us): Likewise.
(altivec_vpku<VI_char>us): Likewise.
(altivec_vpku<VI_char>um): Likewise.
(altivec_vpku<VI_char>um_direct): New (copy of
altivec_vpku<VI_char>um that still relies on BYTES_BIG_ENDIAN, for
internal use).
(altivec_vupkhs<VU_char>): Emit vupkls* instead of vupkhs* when
target is little endian and -maltivec=be is not specified.
(*altivec_vupkhs<VU_char>_direct): New (copy of
altivec_vupkhs<VU_char> that always emits vupkhs*, for internal
use).
(altivec_vupkls<VU_char>): Emit vupkhs* instead of vupkls* when
target is little endian and -maltivec=be is not specified.
(*altivec_vupkls<VU_char>_direct): New (copy of
altivec_vupkls<VU_char> that always emits vupkls*, for internal
use).
(altivec_vupkhpx): Emit vupklpx instead of vupkhpx when target is
little endian and -maltivec=be is not specified.
(altivec_vupklpx): Emit vupkhpx instead of vupklpx when target is
little endian and -maltivec=be is not specified.
gcc/testsuite:
2014-02-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.dg/vmx/pack.c: New.
* gcc.dg/vmx/pack-be-order.c: New.
* gcc.dg/vmx/unpack.c: New.
* gcc.dg/vmx/unpack-be-order.c: New.
From-SVN: r207520
PR ipa/59947
* ipa-devirt.c (possible_polymorphic_call_targets): Fix
a comment typo and formatting issue. If odr_hash hasn't been
created, return vNULL and set *completep to false.
* g++.dg/opt/pr59947.C: New test.
From-SVN: r207512
PR c++/58703
* parser.c (cp_parser_omp_declare_reduction): Save and free
declarator_obstack.
* c-c++-common/gomp/pr58703.c: New test.
From-SVN: r207511
2014-02-05 Richard Biener <rguenther@suse.de>
lto/
* lto.h (lto_global_var_decls): Remove.
* lto-lang.c (lto_init): Do not allocate lto_global_var_decls.
(lto_write_globals): Do nothing in WPA stage, gather globals from
the varpool here ...
* lto.c (lto_main): ... not here.
(materialize_cgraph): Do not call rest_of_decl_compilation
on the empty lto_global_var_decls vector.
(lto_global_var_decls): Remove.
From-SVN: r207510
2014-02-05 Richard Biener <rguenther@suse.de>
PR testsuite/60076
* gcc.dg/vect/pr60012.c: Require vect_extract_even_odd and
avoid using unsigned long long.
From-SVN: r207509
PR middle-end/57499
* tree-eh.c (cleanup_empty_eh): Bail out on totally empty
bb with no successors.
* g++.dg/torture/pr57499.C: New test.
From-SVN: r207504
2014-02-05 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_analyze_loop_2): Be more informative
when not vectorizing because of too many alias checks.
* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Add more verboseness, avoid duplicate MSG_MISSED_OPTIMIZATION.
From-SVN: r207499
* config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Do not
accept extended registers in any mode when compiling for the
MN10300.
From-SVN: r207498
* ipa.c (function_and_variable_visibility): Decompose DECL_ONE_ONLY
groups when we know they are controlled by LTO.
* varasm.c (default_binds_local_p_1): If object is in other partition,
it will be resolved locally.
* lto-partition.c (get_symbol_class): Only unforced DECL_ONE_ONLY
needs duplicating, not generic COMDAT.
From-SVN: r207489
2014-02-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* gcc/config/host-linux.c (linux_gt_pch_use_address): Don't
use SSIZE_MAX because it is not always defined.
From-SVN: r207488
2014-02-04 Vladimir Makarov <vmakarov@redhat.com>
PR bootstrap/59913
* lra-constraints.c (need_for_split_p): Use more 3 reloads as
threshold for pseudo splitting.
(update_ebb_live_info): Process call argument hard registers and
hard registers from insn definition too.
(max_small_class_regs_num): New constant.
(inherit_in_ebb): Update live hard regs through EBBs. Update
reloads_num only for small register classes. Don't split for
outputs of jumps.
From-SVN: r207485
2014-02-04 Richard Biener <rguenther@suse.de>
PR lto/59723
* lto-streamer-out.c (tree_is_indexable): Force NAMELIST_DECLs
in function context local.
(lto_output_tree_ref): Do not write trees from lto_output_tree_ref.
* lto-streamer-in.c (lto_input_tree_ref): Handle LTO_namelist_decl_ref
similar to LTO_imported_decl_ref.
lto/
* lto.c (mentions_vars_p): Handle NAMELIST_DECL.
(lto_fixup_prevailing_decls): Handle fixing up CONSTRUCTOR values.
From-SVN: r207471
2014-02-04 Gary Dismukes <dismukes@adacore.com>
* sem_aggr.adb: Change "runtime" to "run time" in warning message,
for consistency with other messages.
2014-02-04 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_Iterator_Loop): For a container element
iterator, indicate that the element is a constant if the container
type does not have a variable indexing aspect.
* sem_ch8.adb (Analyze_Object_Renaming): If the entity is already
marked as constant, do not reset its Ekind, to ensure that
container elements in an element loop are not modified if the
container (e.g. a hashed set) only has a constant indexing aspect.
2014-02-04 Arnaud Charlet <charlet@adacore.com>
* g-souinf.ads: Subprograms in this unit are actually not pure.
* freeze.adb (Freeze_Subprogram): Do not reset Is_Pure for Intrinsics.
* einfo.ads (Is_Pure): Update doc to match implementation.
From-SVN: r207469
2014-02-04 Gary Dismukes <dismukes@adacore.com>
* exp_ch13.adb: Minor spelling fix.
2014-02-04 Robert Dewar <dewar@adacore.com>
* opt.ads: Minor comment update.
2014-02-04 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Expression_With_Actions): Use Rewrite
instead of Replace.
2014-02-04 Ed Schonberg <schonberg@adacore.com>
* sem_aggr.adb (Resolve_Array_Aggregate): Suppress warnings
on null expressions if component type is non-null, when the
corresponding association covers an empty range of index values.
From-SVN: r207468
2014-02-04 Robert Dewar <dewar@adacore.com>
* sinfo.ads: Further comments on N_Expression_With_Actions node.
2014-02-04 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Remove global
variables Out_Items and Ref_Global. Remove local constant
Body_Id along with dummy variables D1, D2, D3, D4, D5, D6, D7
and D8. Remove the useless collection of global items as this
was a leftover from an earlier version of the routine. Move
several routines out to avoid deep nesting and indentation.
(Inputs_Match): Add formal parameter Dep_Clause. Rename formal
parameter Do_Checks to Post_Errors. Update the comment on usage.
(Is_Matching_Input): Renamed to Input_Match. Add formal parameters
Ref_Inputs and Do_Checks. Rename formal parameter Do_Checks
to Post_Errors. Update the comment on usage. Account for the
case where a self referential state may have a null input_list.
(Is_Self_Referential): New routine.
2014-02-04 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): If the
entity renames an expression, as in the case of an object of
an unconstrained type initialized by a function call, defer the
rewriting of the expression to the expander.
* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
'Alignment): If the entity renames an expression, introduce
temporary to capture value, and rewrite original declaration to
use temporary.
From-SVN: r207467
2014-02-04 Gary Dismukes <dismukes@adacore.com>
* g-comlin.adb: Minor typo fix.
2014-02-04 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_All): Types derived from a formal
access_to_classwide type do not have a finalization master.
2014-02-04 Robert Dewar <dewar@adacore.com>
* sprint.adb: Minor reformatting.
2014-02-04 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Expression_With_Actions): Eliminate
cases where Actions is a null list.
* sinfo.ads (N_Expression_With_Actions): Actions can be
temporarily empty during semantic analysis, but must be non-empty
in the final expanded tree.
From-SVN: r207466
PR tree-optimization/60023
* tree-if-conv.c (predicate_mem_writes): Pass true instead of
false to gsi_replace.
* tree-vect-stmts.c (vect_finish_stmt_generation): If stmt
has been in some EH region and vec_stmt could throw, add
vec_stmt into the same EH region.
* tree-data-ref.c (get_references_in_stmt): If IFN_MASK_LOAD
has no lhs, ignore it.
* internal-fn.c (expand_MASK_LOAD): Likewise.
* g++.dg/vect/pr60023.cc: New test.
From-SVN: r207464