2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Build_Predicate_Functions): The expression for
the predicate is side-effect free if it does not contain any
variable references.
2015-10-16 Bob Duff <duff@adacore.com>
* a-convec.adb ("="): Previous version depended
on "=" composing, but that doesn't quite work -- we want the "="
operator passed in to the generic. So we need a loop after all.
2015-10-16 Yannick Moy <moy@adacore.com>
* sem_util.adb (Is_Object_Reference): Attribute 'Loop_Entry produces
an object.
* sem_ch6.adb: Minor fix in comment.
From-SVN: r228897
2015-10-16 Bob Duff <duff@adacore.com>
* a-contai.ads: Add two check names: Container_Checks and
Tampering_Check. Move the tampering check machinery from
Ada.Containers.Vectors to Ada.Containers. Later we can share it
with other containers.
Disable the tampering machinery in the presence of
Suppress(Tampering_Check).
Simplify the implementation of tampering checks. E.g. use RAII
to make incrementing/decrementing of the counts more concise.
* a-contai.adb: New package body, implementing the above.
* a-convec.ads, a-convec.adb: Use tampering check machinery
in Ada.Containers.
Disable all checking code when checks are suppressed.
Simplify many of the operations. Implement "&" in terms of Append,
rather than "by hand".
Remove: function "=" (L, R : Elements_Array) return Boolean is
abstract; so we can call the predefined "=" on Elements_Array.
For "=" on Vectors: Previously, we returned True immediately if
Left'Address = Right'Address. That seems like a non-optimization
("if X = X" is unusual), so removed that. Simplify by using
slice comparison ("=" on Element_Array will automatically call
"=" on the components, even if user defined).
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Chek_Record_Representation_Clause): When
iterating over components, skip anonymous subtypes created for
constrained array components.
From-SVN: r228896
2015-10-16 Bob Duff <duff@adacore.com>
* adadecode.h, adadecode.c (ada_demangle): Remove
ada_demangle, no longer used.
* a-except-2005.adb: Bring System.Traceback.Symbolic into the
closure.
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb, sem_util.ads (Get_Reference_Discriminant): Utility to
locate the access discriminant that supports implicit dereference on a
record type.
(Is_OK_Variable_For_Out_Parameter): Reject other illegal uses
of Implicit_Dereference on an access_to_constant when actual
parameter is a rewritten variable or function call.
From-SVN: r228886
2015-10-16 Bob Duff <duff@adacore.com>
* a-tags.adb, s-trasym.adb, s-trasym.ads: Make sure we don't get elaboration circularities when polling is turned on.
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Replace_Anonymous_Access_To_Protected_Subprogram):
When creating a full declaration for a formal parameter, the
entity is labelled as an Itype, so set Associated_Node_For_Itype
accordingly.
* einfo.ads: Clarify use of Associated_Node_For_Itype.
2015-10-16 Bob Duff <duff@adacore.com>
* bindgen: Move pragmas Warnings earlier, otherwise
we can get warnings on with_clauses.
From-SVN: r228885
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* s-osprim-mingw.adb, s-osprim-x32.adb, s-taprop-mingw.adb,
s-taprop-posix.adb (Monotonic_Clock): Removed, not used.
Remove remaining references to OS_Primitives.Monotonic_Clock.
Keep it only on windows which is a special case.
2015-10-16 Javier Miranda <miranda@adacore.com>
* a-textio.adb (Get_Line): Fix documentation.
* einfo.ads (Interface_Name): Fix documentation.
* exp_aggr.adb (Backend_Processing_Possible): Fix documentation.
* exp_ch4.adb (Expand_N_In): Fix documentation.
From-SVN: r228884
2015-10-16 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Subp_Info): Remove Listed component.
(Add_Inlined_Subprogram): Take an entity instead of an index.
Do not set Listed component to True.
(New_Entry): Do not initialize Listed component to False.
(Analyze_Inlined_Bodies): Do not test Listed component
(Must_Inline): Add calls not in the main unit only
if they are in a subprogram that can be inlined outside its unit.
(Add_Inlined_Body): Move test around and add comment.
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* sinfo.ads, einfo.ads: monir clean ups.
From-SVN: r228883
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* usage.adb, debug.adb, a-except.adb, a-except.ads, a-except-2005.adb,
a-except-2005.ads, s-imgrea.adb: Minor code clean ups related to
jgnat/dotnet removal.
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* s-osprim-vxworks.adb, s-osprim-darwin.adb, s-tadeca.adb,
s-osprim-unix.adb, s-osprim-solaris.adb, s-osprim-posix.adb,
s-osprim.ads (Monotonic_Clock): Removed, unused.
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Object_Operation, Try_One_Interpretation):
Do not reset the Obj_Type of the prefix if an interpretation
involves an untagged type, to prevent a crash when analyzing an
illegal program in All_Errors mode.
2015-10-16 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch4.adb (Expand_N_Expression_With_Actions):
Force the evaluation of the expression when its type is Boolean.
(Force_Boolean_Evaluation): New routine.
2015-10-16 Bob Duff <duff@adacore.com>
* sem_util.adb (Has_Discrim_Dep_Array): Remove
this function, and the call. No longer needed now that the back
end can handle such things. Should result in further speedups
in some cases.
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Build_Predicate_Functions): If expression for
predicate is side-effect free, indicate that the predicate
function is pure, to allow for optimization of redundant
predicate checks.
From-SVN: r228881
2015-10-16 Gary Dismukes <dismukes@adacore.com>
* exp_ch9.adb (Build_Simple_Entry_Call): Set_Is_Internal on
the temporary object used for a by-copy entry parameter, to
ensure that the object doesn't get its No_Initialization flag
reset later in Default_Initialize_Object. Also, generate the
assignment of the actual to the temporary in the additional case
of a scalar out parameter whose type has a Default_Value aspect.
* exp_ch3.adb: Fix minor typo in comment.
From-SVN: r228879
2015-10-16 Hristian Kirtchev <kirtchev@adacore.com>
* exp_util.adb, sem_util.ads, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb:
Minor reformatting.
* sem_ch12.adb (Analyze_Formal_Package_Declaration): Set the
SPARK_Mode from the context.
2015-10-16 Bob Duff <duff@adacore.com>
* sem_util.adb (Requires_Transient_Scope):
If Typ is a generic formal incomplete type, look at the actual
type. Otherwise, we don't notice that the actual type is tagged,
has a variant part, etc, causing a mismatch of calling conventions
between caller and callee.
2015-10-16 Hristian Kirtchev <kirtchev@adacore.com>
* einfo.ads: Move the declaration of enumeration
literal E_Abstract_State above E_Entry. Update the upper bound
of subtype Overloadable_Kind.
2015-10-16 Gary Dismukes <dismukes@adacore.com>
* exp_attr.adb: Minor editorial changes.
From-SVN: r228878
2015-10-16 Aurelio Remonda <aurelio.remonda@tallertechnologies.com>
* testsuite/25_algorithms/random_shuffle/moveable.cc: Change variable
N from const int N = 200000 to const unsigned int N = 10000.
Delete useless fill_ascending function call.
From-SVN: r228876
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* sem_ch12.adb: Minor punctuation fix in comment
* s-rident.ads: Minor consistency fix in comment
* exp_attr.adb, g-spipat.ads: punctuation fixes in comments.
* restrict.ads: Style fix in comments.
* sem_prag.adb: Minor grammar fix in comment
From-SVN: r228873
2015-10-16 Gary Dismukes <dismukes@adacore.com>
* sem_ch12.adb: Minor reformatting/rewording.
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* einfo.ads: Minor fix of duplicate words
* rident.ads: Minor style fix in comment
From-SVN: r228872
2015-10-16 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch3.adb (Expand_N_Full_Type_Declaration): Do not capture,
set and restore the Ghost mode.
(Expand_N_Object_Declaration): Do not capture, set and restore the
Ghost mode.
(Freeze_Type): Redo the capture and restore of the Ghost mode.
(Restore_Globals): Removed.
* exp_ch5.adb (Expand_N_Assignment_Statement): Redo the capture
and restore of the Ghost mode.
(Restore_Globals): Removed.
* exp_ch6.adb (Expand_N_Procedure_Call_Statement):
Redo the capture and restore of the Ghost mode.
(Expand_N_Subprogram_Body): Redo the capture, set and restore
of the Ghost mode.
(Expand_N_Subprogram_Declaration): Do not
capture, set and restore the Ghost mode.
(Restore_Globals): Removed.
* exp_ch7.adb (Expand_N_Package_Body): Redo the capture, set
and restore of the Ghost mode.
(Expand_N_Package_Declaration): Do not capture, set and restore the
Ghost mode.
* exp_ch8.adb (Expand_N_Exception_Renaming_Declaration):
Redo the capture and restore of the Ghost mode.
(Expand_N_Object_Renaming_Declaration): Redo
the capture and restore of the Ghost mode.
(Expand_N_Package_Renaming_Declaration):
Redo the capture and restore of the Ghost mode.
(Expand_N_Subprogram_Renaming_Declaration): Redo the capture
and restore of the Ghost mode.
* exp_ch11.adb Remove with and use clauses for Ghost.
(Expand_N_Exception_Declaration): Do not capture, set and restore
the Ghost mode.
* exp_disp.adb (Make_DT): Redo the capture and restore of the
Ghost mode.
(Restore_Globals): Removed.
* exp_prag.adb (Expand_Pragma_Check): Do not capture, set
and restore the Ghost mode.
(Expand_Pragma_Contract_Cases):
Redo the capture and restore of the Ghost mode. Preserve the
original context of contract cases by setting / resetting the
In_Assertion_Expr counter.
(Expand_Pragma_Initial_Condition):
Redo the capture and restore of the Ghost mode.
(Expand_Pragma_Loop_Variant): Redo the capture and restore of
the Ghost mode.
(Restore_Globals): Removed.
* exp_util.adb (Make_Predicate_Call): Redo the capture and
restore of the Ghost mode.
(Restore_Globals): Removed.
* freeze.adb (Freeze_Entity): Redo the capture and restore of
the Ghost mode.
(Restore_Globals): Removed.
* ghost.adb (Check_Ghost_Context): Remove the RM reference from
the error message.
(Is_OK_Statement): Account for statements
that appear in assertion expressions.
(Is_Subject_To_Ghost):
Moved from spec.
* ghost.ads (Is_Subject_To_Ghost): Moved to body.
* rtsfind.ads (Load_RTU): Redo the capture and restore of the
Ghost mode.
* sem.adb Add with and use clauses for Ghost.
(Analyze): Redo
the capture and restore of the Ghost mode. Set the Ghost mode
when analyzing a declaration.
(Do_Analyze): Redo the capture
and restore of the Ghost mode.
* sem_ch3.adb (Analyze_Full_Type_Declaration): Do not capture, set
and restore the Ghost mode.
(Analyze_Incomplete_Type_Decl):
Do not capture, set and restore the Ghost mode.
(Analyze_Number_Declaration): Do not capture, set and restore the
Ghost mode.
(Analyze_Object_Declaration): Do not capture, set and
restore the Ghost mode.
(Analyze_Private_Extension_Declaration):
Do not capture, set and restore the Ghost mode.
(Analyze_Subtype_Declaration): Do not capture, set and restore
the Ghost mode.
(Restore_Globals): Removed.
* sem_ch5.adb (Analyze_Assignment): Redo the capture and restore
of the Ghost mode.
(Restore_Globals): Removed.
* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration):
Do not capture, set and restore the Ghost mode.
(Analyze_Procedure_Call): Redo the capture and restore of the
Ghost mode.
(Analyze_Subprogram_Body_Helper): Redo the capture
and restore of the Ghost mode. (Analyze_Subprogram_Declaration):
Do not capture, set and restore the Ghost mode.
(Restore_Globals): Removed.
* sem_ch7.adb (Analyze_Package_Body_Helper): Redo the capture and
restore of the Ghost mode.
(Analyze_Package_Declaration):
Do not capture, set and restore the Ghost mode.
(Analyze_Private_Type_Declaration): Do not capture, set and
restore the Ghost mode.
(Restore_Globals): Removed.
* sem_ch8.adb (Analyze_Exception_Renaming): Do not capture,
set and restore the Ghost mode.
(Analyze_Generic_Renaming): Do not capture, set and restore the Ghost
mode.
(Analyze_Object_Renaming): Do not capture, set and restore the
Ghost mode.
(Analyze_Package_Renaming): Do not capture, set and restore the Ghost
mode.
(Analyze_Subprogram_Renaming): Do not capture, set and restore the
Ghost mode.
(Restore_Globals): Removed.
* sem_ch11.adb (Analyze_Exception_Declaration): Do not capture,
set and restore the Ghost mode.
* sem_ch12.adb (Analyze_Generic_Package_Declaration):
Do not capture, set and restore the Ghost mode.
(Analyze_Generic_Subprogram_Declaration): Do not capture, set
and restore the Ghost mode.
* sem_ch13.adb (Build_Invariant_Procedure_Declaration): Redo
the capture and restore of the Ghost mode.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
Redo the capture and restore of the Ghost mode.
(Analyze_External_Property_In_Decl_Part):
Redo the capture and restore of the Ghost mode.
(Analyze_Initial_Condition_In_Decl_Part): Redo the
capture and restore of the Ghost mode. (Analyze_Pragma):
Do not capture, set and restore the Ghost mode for Assert.
Redo the capture and restore of the Ghost mode for Check. Do
not capture and restore the Ghost mode for Invariant.
(Analyze_Pre_Post_Condition_In_Decl_Part): Redo the capture and
restore of the Ghost mode.
* sem_res.adb (Resolve): Capture, set and restore the Ghost mode
when resolving a declaration.
* sem_util.adb (Build_Default_Init_Cond_Procedure_Body):
Redo the capture and restore of the Ghost mode.
(Build_Default_Init_Cond_Procedure_Declaration): Redo the capture
and restore of the Ghost mode.
From-SVN: r228871
2015-10-16 Javier Miranda <miranda@adacore.com>
* inline.adb (Add_Inlined_Body): Ensure that
Analyze_Inlined_Bodies will be invoked after completing the
analysis of the current unit.
2015-10-16 Arnaud Charlet <charlet@adacore.com>
* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Fix error
message for bad last bit position.
* sem_ch3.adb, sem_util.adb, sem_util.ads: Minor reformatting.
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_N_Case_Statement): If expression is
compile-time known but does not obey a static predicate on
its type, replace the case statement with a raise statement,
as with other statically detected constraint violations.
2015-10-16 Bob Duff <duff@adacore.com>
* s-traceb.adb, s-traceb.ads, s-traceb-hpux.adb, s-traceb-mastop.adb:
Reinstate code.
* opt.ads: Minor typo.
From-SVN: r228866
2015-10-16 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (Gather_Components): When gathering components
of a nested variant, the record type used in legality checks is
the enclosing record type.
From-SVN: r228865
2015-10-16 Richard Biener <rguenther@suse.de>
* gimple-fold.c (gimple_fold_builtin_memory_op): Use gimple_build
and get rid of force_gimple_operand_gsi.
(gimple_fold_builtin_memory_chk): Likewise.
(gimple_fold_builtin_stxcpy_chk): Likewise.
(rewrite_to_defined_overflow): Likewise.
(gimple_convert_to_ptrofftype): New function.
* gimple-fold.h (gimple_convert_to_ptrofftype): New overload,
declare.
From-SVN: r228863
Andrew Pinski <andrew.pinski@caviumnetworks.com>
* match.pd ((x < y) && (x < z) -> x < min (y,z),
(x > y) and (x > z) -> x > max (y,z))
* testsuite/gcc.dg/tree-ssa/minmax-loopend.c: New test.
Co-Authored-By: Andrew Pinski <andrew.pinski@caviumnetworks.com>
From-SVN: r228854
2015-10-15 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_get_new_ssa_name): Declare.
* tree-vect-data-refs.c (vect_get_new_ssa_name): New helper.
* tree-vect-loop.c (get_initial_def_for_induction): Drop
use of force_gimple_operand in favor of gimple_build.
Use vect_get_new_ssa_name.
* tree-vect-stmts.c (vect_init_vector): Use vect_get_new_ssa_name.
(vectorizable_mask_load_store): Likewise.
(vectorizable_call): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vect_get_vec_def_for_stmt_copy): Remove redundant stmt.
From-SVN: r228841
This patch fixes some fallout from my patch to move the sqrt and cbrt
folding rules to match.pd. The rules included canonicalisations like:
sqrt(sqrt(x))->pow(x,1/4)
which in the original code was only ever done at the generic level.
My patch meant that we'd do it whenever we tried to fold a gimple
statement, and eventually it would win over the sincos optimisation
that replaces pow(x,1/4) with sqrt(sqrt(x)).
Following a suggestion from Richard B, the patch adds a new
PROP_gimple_* flag to say whether fp routines have been optimised
for the target. If so, match.pd should only transform calls to math
functions if the result is actually an optimisation, not just an
IL simplification or canonicalisation. The question then of course
is: which rules are which? I've added block comments that describe
the criteria I was using.
A slight wart is that we need to use the cfun global to access
the PROP_gimple_* flag; there's no local function pointer available.
Bootstrapped & regression-tested on x86_64-linux-gnu. Also tested
on powerc64-linux-gnu.
gcc/
PR tree-optimization/67945
* tree-pass.h (PROP_gimple_opt_math): New property flag.
* generic-match-head.c (canonicalize_math_p): New function.
* gimple-match-head.c: Include tree-pass.h.
(canonicalize_math_p): New function.
* match.pd: Group math built-in rules into simplifications
and canonicalizations. Guard the latter with canonicalize_math_p.
* tree-ssa-math-opts.c (pass_data_cse_sincos): Provide the
PROP_gimple_opt_math property.
From-SVN: r228840
PR tree-optimization/67953
* match.pd (X - (X / Y) * Y): Don't change signedness of @0.
* gcc.dg/fold-minus-6.c (fn4): Change the type of A to
unsigned.
* gcc.dg/torture/pr67953.c: New test.
From-SVN: r228839
* config/mips/mips.h (MIPS_STACK_ALIGN): Implement using
ROUND_UP macro.
* config/mips/mips.c (mips_setup_incoming_varargs): Use
ROUND_DOWN to calculate off.
(mips_gimplify_va_arg_expr): Use ROUND_UP to calculate rsize.
(mips_emit_probe_stack_range): Use ROUND_DOWN to calculate
rounded_size.
From-SVN: r228829
libgomp/
* target.c (gomp_map_vars): Initialize tgt->tgt_start and tgt->tgt_end
to 0 when mapnum is 0.
Co-Authored-By: Aleksander Ivanushenko <aleksander.ivanushenko@intel.com>
From-SVN: r228825
* gcc.dg/tree-ssa/ssa-dom-thread-2.c: Deleted. The six functions
contained within have their own file/test now.
* gcc.dg/tree-ssa/ssa-dom-thread-2a.c: New test extracted from
ssa-dom-thread-2.c. Tighten expected output slightly and comment
expectations a bit more.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2c.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2d.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2e.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2f.c: Likewise.
From-SVN: r228821