2014-08-04 Robert Dewar <dewar@adacore.com>
* prj-proc.adb, prj-part.adb, prj-strt.adb, prj.adb, prj.ads,
prj-attr.adb, prj-attr.ads: Minor reformatting.
2014-08-04 Yannick Moy <moy@adacore.com>
* expander.adb (Expand): Always perform special
expansion in GNATprove mode, even when doing pre-analysis.
2014-08-04 Thomas Quinot <quinot@adacore.com>
* repinfo.adb (List_Scalar_Storage_Order): List bit order if
not default. Also list bit order if SSO is specified. Do not
assume that bit order is always equal to scalar storage order.
2014-08-04 Thomas Quinot <quinot@adacore.com>
* freeze.adb (Set_SSO_From_Default): Do not set scalar storage
order to reverse SSO for a type that has an explicit native
Bit_Order.
2014-08-04 Doug Rupp <rupp@adacore.com>
* cal.c: Macro check for VxWorks7.
* init.c (getpid): Likewise.
* mkdir.c (__gnat_mkdir): Likewise.
* sysdep.c (__gnat_is_file_not_found_error): Likewise.
2014-08-04 Gary Dismukes <dismukes@adacore.com>
* exp_ch3.adb (Expand_N_Object_Declaration): Inhibit generation
of an invariant check in the case where No_Initialization is set,
since the object is uninitialized.
2014-08-04 Thomas Quinot <quinot@adacore.com>
* snames.ads-tmpl (Default_Scalar_Storage_Order): Now an attribute
name, in addition to a pragma name.
* snames.adb-tmpl (Get_Pragma_Id, Is_Configuration_Pragma_Name,
Is_Pragma_Name): Adjust accordingly.
* sem_attr.ads, sem_attr.adb, exp_attr.adb
(Attribute_Default_Scalar_Storage_Order): Add handling of new
attribute.
* gnat_rm.texi: Document the above.
From-SVN: r213549
2014-08-04 Arnaud Charlet <charlet@adacore.com>
* exp_util.adb (Check_Float_Op_Overflow): No-op in codepeer
mode for now, to revert to previous behavior.
* checks.adb: Revert previous change, no longer needed.
2014-08-04 Robert Dewar <dewar@adacore.com>
* gnat1drv.adb (Adjust_Global_Switches): Don't set
Check_Float_Overflow if Machine_Oveflows_On_Target is True.
* sem_prag.adb (Analyze_Pragma, case Check_Float_Overflow): Don't
set Check_Float_Overflow if Machine_Oveflows_On_Target is True.
* switch-c.adb (Scan_Front_End_Switches): Don't set
Check_Float_Overflow if Machine_Oveflows_On_Target is True.
2014-08-04 Vincent Celier <celier@adacore.com>
* prj-attr.adb: Add new default indications for
attributes Object_Dir, Exec_Dir, Source_Dirs and Target.
(Attribute_Default_Of): New function (Initialize): Set the
default for those attributes that have one specified.
* prj-attr.ads (Attribute_Data): New component Default.
* prj-proc.adb (Expression): Take into account the new defaults
for attributes Object_Dir, Exec_Dir and Source_Dirs.
* prj-strt.adb (Attribute_Reference): Set the default for
the attribute.
* prj-tree.ads, prj-tree.adb (Default_Of): New function.
(Set_Default_Of): New procedure.
* prj.adb (The_Dot_String): New global Name_Id variable,
initialized in procedure Initialize.
(Dot_String): New function
(Initialize): Initialize The_Dot_String.
(Reset): Create the string list Shared.Dot_String_List.
* prj.ads (Attribute_Default_Value): New enumeration type.
(Project_Qualifier): Change enumeration value Dry to Abstract_Project.
(Dot_String): New function.
(Shared_Project_Tree_Data): New string list component Dot_String_List.
* projects.texi: Document new defaults for attribute Object_Dir,
Exec_Dir and Source_Dirs.
From-SVN: r213548
2014-08-04 Robert Dewar <dewar@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference, case Pred):
Remove special test for Float'First, no longer required.
(Expand_N_Attribute_Reference, case Succ): Remove special test
for Float'First, no longer required.
* s-fatgen.adb (Pred): return infinity unchanged.
(Succ): ditto.
2014-08-04 Claire Dross <dross@adacore.com>
* sem_ch12.adb (Analyze_Associations): Defaults should only be
used if there is no explicit match.
* exp_util.adb (Get_First_Parent_With_Ext_Axioms_For_Entity):
Also check for pragma external_axiomatization on generic units.
From-SVN: r213546
2014-08-04 Robert Dewar <dewar@adacore.com>
* checks.adb (Activate_Overflow_Check): Remove
Check_Float_Overflow processing.
(Apply_Scalar_Range_Check): Ditto.
(Generate_Range_Check): Ditto.
* exp_ch4.adb (Expand_N_Op_Add): Add call to
Check_Float_Op_Overflow.
(Expand_N_Op_Divide): ditto.
(Expand_N_Op_Multiply): ditto.
(Expand_N_Op_Subtract): ditto.
* exp_util.ads, exp_util.adb (Check_Float_Op_Overflow): New procedure.
* sem_attr.adb (Analyze_Attribute, case Pred): Make sure
Do_Range_Check is set for floating-point case in -gnatc or
GNATprove mode.
(Analyze_Attribute, case Succ): Make sure
Do_Range_Check is set for floating-point case in -gnatc or
GNATprove mode.
* sem_res.adb (Resolve_Type_Conversion): Make sure Do_Range_Check
flag is set for real to integer conversion in GNATprove or
-gnatc mode.
2014-08-04 Gary Dismukes <dismukes@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications): Resolve
the expression of an Import or Export aspect as type Boolean
and require it to be static. Add ??? comment. Also, set the
Is_Exported flag when appropriate.
From-SVN: r213545
2014-08-04 Tom de Vries <tom@codesourcery.com>
* gcc.dg/cproj-fails-with-broken-glibc.c: Use xfail for broken glibc
version instead of required-target.
* lib/target-supports.exp
(check_effective_target_not_glibc_2_11_or_earlier): Replace by ...
(check_effective_target_glibc_2_11_or_earlier): ... this.
* doc/sourcebuild.texi (glibc, glibc_2_12_or_later)
(glibc_2_11_or_earlier): Document effective-target keywords.
From-SVN: r213543
2014-08-04 Thomas Quinot <quinot@adacore.com>
* s-fatgen.ads, s-fatgen.adb (S, P): New visible type declarations
(Unaligned_Valid): Remove now unused subprogram.
* exp_attr.adb (Expand_N_Attribute_Reference, case
Attribute_Valid): If the prefix is in reverse SSO or potentially
unaligned, copy it using a byte copy operation to a temporary
variable.
* einfo.adb: Minor comment fix.
2014-08-04 Hristian Kirtchev <kirtchev@adacore.com>
* freeze.adb (Freeze_Entity): Do not freeze formal subprograms.
From-SVN: r213540
2014-08-04 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (Is_Potentially_Unevaluated): If the original
node of a parent node in the tree is a short-circuit operation,
the node is potentially unevaluated.
2014-08-04 Robert Dewar <dewar@adacore.com>
* sem_res.adb (Resolve_Type_Conversion): Set Do_Range_Check on
conversion from a real type to an integer type.
From-SVN: r213538
2014-08-04 Yannick Moy <moy@adacore.com>
* sem.adb, sem.ads (In_Default_Expr): Global flag that is set
to True during analysis of a default component expression.
(Semantics): Save and restore In_Default_Expr around analysis.
* sem_ch3.adb, sem_ch3.ads (Analyze_Component_Declaration):
Call new wrapper Preanalyze_Default_Expression.
(Preanalyze_Default_Expression): New wrapper on
Preanalyze_Spec_Expression which sets and restores In_Default_Expr.
* sem_res.adb (Resolve_Call): Mark calls inside default
expressions as not inlined in GNATprove mode.
From-SVN: r213536
2014-08-04 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb: Minor reformatting.
2014-08-04 Olivier Hainque <hainque@adacore.com>
* link.c: remove const on __gnat_objlist_file_supported for AIX
2014-08-04 Robert Dewar <dewar@adacore.com>
* sem_util.ads: Minor addition of comment.
2014-08-04 Vincent Celier <celier@adacore.com>
* prj-dect.adb (Check_Package_Allowed): Allow package IDE in
all projects, including aggregate and aggregate library projects.
2014-08-04 Yannick Moy <moy@adacore.com>
* back_end.adb (Call_Back_End): Do not call gigi in GNATprove mode.
2014-08-04 Robert Dewar <dewar@adacore.com>
* sem_eval.adb (Test_In_Range): Always in range for
Is_Known_Valid target type, where input type has smaller or
equal size and does not have biased rep.
2014-08-04 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Eval_Attribute): Constrained is not treated as
a static attribute, and the Static flag must not be set on it
during resolution. It may be constant-folded during expansion,
but if expansion is disabled it is not a static expression.
From-SVN: r213535
2014-08-04 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch8.adb (Build_Class_Wide_Wrapper): Mark the primitive as
referenced once resolution has taken place.
2014-08-04 Gary Dismukes <dismukes@adacore.com>
* exp_ch4.adb (Expand_N_Type_Conversion): Don't
compare access levels in the case where the target type is the
anonymous type of an access discriminant, since the level of
such types is defined based on context. Add comment.
From-SVN: r213534
2014-08-04 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch8.adb (Build_Class_Wide_Wrapper): Handle various special
cases related to equality. Remove the special processing
for dispatching abstract subprograms as it is not needed.
(Interpretation_Error): Add a specialized error message for
predefined operators.
(Is_Intrinsic_Equality): New routine.
(Is_Suitable_Candidate): New routine.
2014-08-04 Gary Dismukes <dismukes@adacore.com>
* checks.adb: Minor comment reformatting.
2014-08-04 Ed Schonberg <schonberg@adacore.com>
* restrict.adb (Check_Restriction): For checked max_parameter
restrictions reset Violated flag, so that subsequent violations
are properly detected.
2014-08-04 Robert Dewar <dewar@adacore.com>
* sem_ch3.adb (Check_Initialization): Fix bad test of GNATprove
mode.
(Process_Discriminants): Fix bad test of GNATprove mode
2014-08-04 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch12.adb (Instantiate_Formal_Subprogram):
Move variable to their own section. Propagate the source
location of a formal parameter to the corresponding formal of
the subprogram renaming declaration. Code reformatting.
From-SVN: r213533
2014-08-04 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Expand_Array_Aggregate): Do not attempt expansion
if error already detected. We may reach this point in spite of
previous errors when compiling with -gnatq, to force all possible
errors (this is the usual ACATS mode).
2014-08-04 Gary Dismukes <dismukes@adacore.com>
* checks.adb (Generate_Range_Check): For the case of converting
a base type with a larger range to a smaller target subtype, only
use unchecked conversions of bounds in the range check followed
by conversion in the case where both types are discrete. In other
cases, convert to the target base type and save in a temporary
followed by the range check.
(Convert_And_Check_Range): New procedure factoring code to save
conversion to a temporary followed by a range check (called two
places in Generate_Range_Check).
* exp_ch4.adb (Expand_N_Type_Conversion): Relax previous
check-in, to generate range checks for conversions between
any floating-point types rather than limiting it to matching
base types.
From-SVN: r213532
* c-common.c (check_case_value): Add location_t parameter. Use it.
(c_add_case_label): Pass loc to check_case_value.
* gcc.dg/case-bogus-1.c: New test.
From-SVN: r213525
* doc/invoke.texi (Wsuggest-final-types, Wsuggest-final-methods): Document.
* ipa-devirt.c: Include hash-map.h
(struct polymorphic_call_target_d): Add type_warning and decl_warning.
(clear_speculation): Break out of ...
(get_class_context): ... here; speed up handling obviously useless
speculations.
(odr_type_warn_count, decl_warn_count): New structures.
(final_warning_record): New structure.
(final_warning_records): New static variable.
(possible_polymorphic_call_targets): Cleanup handling of speculative info;
do not build speculation when user do not care; record info about warnings
when asked for.
(add_decl_warning): New function.
(type_warning_cmp): New function.
(decl_warning_cmp): New function.
(ipa_devirt): Handle -Wsuggest-final-methods and -Wsuggest-final-types.
(gate): Enable pass when warnings are requested.
* common.opt (Wsuggest-final-types, Wsuggest-final-methods): New options.
* g++.dg/warn/Wsuggest-final.C: New testcase.
* g++.dg/ipa/devirt-34.C: Fix.
From-SVN: r213518
PR other/61895
runtime: Ignore small argv[0] file for backtrace.
Reportedly in some cases Docker starts processes with argv[0]
pointing to an empty file. That would cause libgo to pass
that empty file to libbacktrace, which would then fail to do
any backtraces. Everything should work fine if libbacktrace
falls back to /proc/self/exe.
This patch to libgo works around the problem by ignoring
argv[0] if it is a small file, or if stat fails. This is not
a perfect fix but it's an unusual problem.
From-SVN: r213513
/cp
2014-08-01 Paolo Carlini <paolo.carlini@oracle.com>
DR 217 again
* decl.c (duplicate_decls): Handle static member functions too.
/testsuite
2014-08-01 Paolo Carlini <paolo.carlini@oracle.com>
DR 217 again
* g++.dg/tc1/dr217-2.C: New.
From-SVN: r213505
currently, aarch64 LEGITIMIZE_ADDRESS_P hook will reject all "reg + offset"
address given "offset" is beyond supported range.
while this may be too strict. we should honor the "strict_p" parameter in the
hook. before reload, we accept all offset if it's a frame access, because the
offset may change during later register elimination.
the early reject of "reg + offset" may cause extra registers created, and if
that register live range is across function invoking then callee saved reg
needed, thus introduce extra reg save/restore also.
give a simple example as:
int
test15 (void)
{
unsigned char a[480];
initialize_array (a, 480);
if (a[0] == 0x10)
return 1;
return 0;
}
.S before the patch
(-O2 -fPIC)
===
test15:
sub sp, sp, #480
mov w1, 480
stp x29, x30, [sp, -32]!
add x29, sp, 0
str x19, [sp, 16]
add x19, x29, 32
mov x0, x19
bl initialize_array
ldrb w0, [x19]
ldr x19, [sp, 16]
ldp x29, x30, [sp], 32
cmp w0, 16
cset w0, eq
add sp, sp, 480
ret
.S after the patch
===
test15:
stp x29, x30, [sp, -496]!
mov w1, 480
add x29, sp, 0
add x0, x29, 16
bl initialize_array
ldrb w0, [x29, 16]
ldp x29, x30, [sp], 496
cmp w0, 16
cset w0, eq
ret
gcc/
* config/aarch64/aarch64.c (aarch64_classify_address): Accept all offset for
frame access when strict_p is false.
gcc/testsuite
* gcc.target/aarch64/legitimize_stack_var_before_reload_1.c: New testcase.
From-SVN: r213488
Add a pridicate to check whether the const offset is valid.
For 32-bit variant: -256 <= offset <= 252
For 64-bit variant: -512 <= offset <= 504
2014-07-29 Renlin Li <renlin.li@arm.com>
2014-07-29 Jiong Wang <jiong.wang@arm.com>
gcc/
* config/aarch64/aarch64.c (offset_7bit_signed_scaled_p): Rename to
aarch64_offset_7bit_signed_scaled_p, remove static and use it.
* config/aarch64/aarch64-protos.h (aarch64_offset_7bit_signed_scaled_p):
Declaration.
* config/aarch64/predicates.md (aarch64_mem_pair_offset): Define new
predicate.
* config/aarch64/aarch64.md (loadwb_pair, storewb_pair): Use
aarch64_mem_pair_offset.
From-SVN: r213487
on aarch64, we are using load register pair post-writeback instruction in
epilogue.
for example, for the following instruction:
ldp, x0, x1, [sp], #16
what it's doing is:
x0 <- MEM(sp + 0)
x1 <- MEM(sp + 8)
sp < sp + 16
while there is a glitch in our loadwb_pair* pattern, the restore of the
first reg should always be with offset zero.
(set (match_operand:GPI 2 "register_operand" "=r")
- (mem:GPI (plus:P (match_dup 1)
- (match_dup 4))))
+ (mem:GPI (match_dup 1)))
gcc/
* config/aarch64/aarch64.md (loadwb_pair<GPI:mode>_<P:mode>): Fix offset.
(loadwb_pair<GPI:mode>_<P:mode>): Likewise.
* config/aarch64/aarch64.c (aarch64_gen_loadwb_pair): Likewise.
From-SVN: r213485
2014-08-01 Ed Schonberg <schonberg@adacore.com>
* restrict.adb (Update_Restrictions): For restrictions with a
maximum parameter (e.g. number of protected entries in Ravenscar)
do not compute the maximum of the violation over several objects,
because the restriction is per-object.
(Check_Restriction): After possible message, reset the value
of of a checked max_parameter restriction to zero, to prevent
cascaded errors.
* sem_ch3.adb (Build_Derived_Private_Type): Use base of parent
(sub)type to determine whether derived type should be on the
list of private dependents of a type whose full view may become
visible subsequently.
From-SVN: r213483
2014-08-01 Olivier Hainque <hainque@adacore.com>
* gcc-interface/Make-lang.in (ADA_TOOLS_FLAGS_TO_PASS, native): use
$(CXX) instead of ../../xg++ to feed CXX.
(CXX_LFLAGS): Remove. Now unused as the proper flags
are expected to be included in the CXX variable.
2014-08-01 Pierre-Marie Derodat <derodat@adacore.com>
* gcc-interface/decl.c (elaborate_expression_1): Return the new
variable when debug info is needed and the expression is not
constant. Tag as external only new variables that are global.
(gnat_to_gnu_entity): Call it after the GNU declaration is saved.
* gcc-interface/trans.c (Attribute_to_gnu): Do not cache
attributes for IN array parameters when their actual subtype
needs debug info.
(Compilation_Unit_to_gnu): Call it to process all remaining nodes.
* gcc-interface/gigi.h (process_deferred_decl_context): New.
* gcc-interface/utils.c (gnat_write_global_declarations): Do not
emit debug info for ignored global declarations.
(struct deferred_decl_context_node,
add_deferred_decl_context, add_deferred_type_context,
compute_deferred_decl_context, defer_or_set_type_context,
deferred_decl_context_queue, get_debug_scope,
get_global_context, process_deferred_decl_context): New.
(gnat_pushdecl): Re-implement the DECL_CONTEXT and TYPE_CONTEXT
computation machinery to rely on the GNAT Scope attribute.
2014-08-01 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils2.c (build_simple_component_ref): Add guard.
From-SVN: r213482
2014-08-01 Bob Duff <duff@adacore.com>
* gnat_ugn.texi: Minor updates.
2014-08-01 Robert Dewar <dewar@adacore.com>
* atree.adb: Minor reformatting.
2014-08-01 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Init_Hidden_Discriminants): If some ancestor is a
private extension, get stored constraint, if any, from full view.
From-SVN: r213479