2019-12-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to validate_size. (gnat_to_gnu_component_type): Likewise. (gnat_to_gnu_field): Likewise and pass string for error messages. (components_need_strict_alignment): Remove test on Is_Aliased and add test for the independence of the component. (validate_size): Add S1 and S2 string parameters and use them to give better error messages for fields. Tweak a couple of messages. * einfo.ads (Has_Independent_Components): Document more cases. (Is_Independent): Likewise. (Strict_Alignment): Document new semantics. * exp_ch9.adb (Install_Private_Data_Declarations): Also set the Is_Independent flag along with Is_Aliased on the renaming entity. * freeze.adb (Size_Known): Remove always-false test and add test for the strict-alignment on the record type. Remove redundant tests and add test for the strict-alignment on the component type. (Check_Strict_Alignment): Set the flag if the type is by-ref and remove now redundant conditions. Set the flag on an array type if it has aliased components. In the record type case, do not set type for C_Pass_By_Copy convention. (Freeze_Array_Type): Move code checking for conflicts between representation aspects and clauses to before specific handling of packed array types. Give a warnind instead of an error for a conflict with pragma Pack. Do not test Has_Pragma_Pack for the specific handling of packed array types. (Freeze_Record_Type): Move error checking of representation clause to... (Freeze_Entity): ...here after Check_Strict_Alignment is called. * sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent flag along with Is_Aliased on the Itype. * sem_ch13.adb (Check_Record_Representation_Clause): Do not set the RM size for a strict-alignment type. * sem_ch3.adb (Add_Interface_Tag_Components): Also set the Is_Independent flag along with Is_Aliased on the tag. (Add_Interface_Tag_Components): Likewise on the offset. (Analyze_Component_Declaration): Likewise on the component. (Analyze_Object_Declaration): Likewise on the object. (Constrain_Array): Likewise on the array. (Record_Type_Declaration: Likewise on the tag. (Array_Type_Declaration): Also set the Has_Independent_Components flag along with Has_Aliased_Components on the array. (Copy_Array_Base_Type_Attributes): Copy Has_Independent_Components. (Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent and Is_Volatile_Full_Access. (Analyze_Iterator_Specification): Set Is_Independent on the loop variable according to Independent_Components on the array. * sem_ch5.adb: Likewise. * sem_ch6.adb (Process_Formals): Also set the Is_Independent flag along with Is_Aliased on the formal. gcc/testsuite/ * gnat.dg/specs/clause_on_volatile.ads, gnat.dg/specs/size_clause3.ads: Update expected diagnostics. From-SVN: r279430
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
abstract_limited.ads | Loading commit data... | |
abstract_private.ads | Loading commit data... | |
access1.ads | Loading commit data... | |
access2.ads | Loading commit data... | |
access3.ads | Loading commit data... | |
access_constant.ads | Loading commit data... | |
access_constant_decl.ads | Loading commit data... | |
aggr1.ads | Loading commit data... | |
aggr2.ads | Loading commit data... | |
aggr3.ads | Loading commit data... | |
aggr3_pkg.ads | Loading commit data... | |
aggr4.ads | Loading commit data... | |
aggr4_pkg.ads | Loading commit data... | |
aggr5.ads | Loading commit data... | |
aggr6.ads | Loading commit data... | |
ai_116.ads | Loading commit data... | |
alignment1.ads | Loading commit data... | |
alignment2.ads | Loading commit data... | |
array1.ads | Loading commit data... | |
array2.ads | Loading commit data... | |
array3.ads | Loading commit data... | |
array4.ads | Loading commit data... | |
array5.ads | Loading commit data... | |
array5_pkg1.ads | Loading commit data... | |
array5_pkg2-g.ads | Loading commit data... | |
array5_pkg2.ads | Loading commit data... | |
array_no_def_init.ads | Loading commit data... | |
atomic1.ads | Loading commit data... | |
atomic2.ads | Loading commit data... | |
atomic3.ads | Loading commit data... | |
attribute_parsing.ads | Loading commit data... | |
box1.ads | Loading commit data... | |
clause_on_volatile.ads | Loading commit data... | |
compile_time1.ads | Loading commit data... | |
compile_time1_pkg.ads | Loading commit data... | |
concat1.ads | Loading commit data... | |
concat1_pkg.ads | Loading commit data... | |
cond_expr1.ads | Loading commit data... | |
constant1.ads | Loading commit data... | |
constant1_pkg.ads | Loading commit data... | |
constructor.ads | Loading commit data... | |
controlled1.ads | Loading commit data... | |
controlled1_pkg.ads | Loading commit data... | |
controller.ads | Loading commit data... | |
corr_discr.ads | Loading commit data... | |
cpp1.ads | Loading commit data... | |
cpp_assignment.ads | Loading commit data... | |
debug1.ads | Loading commit data... | |
delta_small.ads | Loading commit data... | |
discr1.ads | Loading commit data... | |
discr1_pkg.ads | Loading commit data... | |
discr2.ads | Loading commit data... | |
discr3.ads | Loading commit data... | |
discr4.ads | Loading commit data... | |
discr4_pkg.ads | Loading commit data... | |
discr5.ads | Loading commit data... | |
discr6.ads | Loading commit data... | |
double_record_extension1.ads | Loading commit data... | |
double_record_extension2.ads | Loading commit data... | |
double_record_extension3.ads | Loading commit data... | |
elab1.ads | Loading commit data... | |
elab2.ads | Loading commit data... | |
elab2_pkg.ads | Loading commit data... | |
elab3.ads | Loading commit data... | |
elab4.ads | Loading commit data... | |
elab4_proc.adb | Loading commit data... | |
elab4_proc.ads | Loading commit data... | |
empty_variants.ads | Loading commit data... | |
fe_inlining.ads | Loading commit data... | |
fe_inlining_helper.adb | Loading commit data... | |
fe_inlining_helper.ads | Loading commit data... | |
formal_type.ads | Loading commit data... | |
gen_interface.ads | Loading commit data... | |
gen_interface_p.ads | Loading commit data... | |
genericppc.ads | Loading commit data... | |
gnati.ads | Loading commit data... | |
iface_eq_test-child.ads | Loading commit data... | |
iface_eq_test.ads | Loading commit data... | |
import_abstract.ads | Loading commit data... | |
integer_value.ads | Loading commit data... | |
interface5.ads | Loading commit data... | |
last_bit.ads | Loading commit data... | |
limited1.ads | Loading commit data... | |
limited_with4.ads | Loading commit data... | |
limited_with4_pkg.ads | Loading commit data... | |
linker_alias.ads | Loading commit data... | |
linker_section.ads | Loading commit data... | |
loop_optimization1.ads | Loading commit data... | |
loop_optimization1_pkg.adb | Loading commit data... | |
loop_optimization1_pkg.ads | Loading commit data... | |
lto12.ads | Loading commit data... | |
lto12_pkg.ads | Loading commit data... | |
lto3.ads | Loading commit data... | |
lto3_pkg1.adb | Loading commit data... | |
lto3_pkg1.ads | Loading commit data... | |
lto3_pkg2.adb | Loading commit data... | |
lto3_pkg2.ads | Loading commit data... | |
machine_attribute.ads | Loading commit data... | |
no_streams.ads | Loading commit data... | |
noinline1.ads | Loading commit data... | |
noinline3.ads | Loading commit data... | |
noinline3_pkg.adb | Loading commit data... | |
noinline3_pkg.ads | Loading commit data... | |
not_null1.ads | Loading commit data... | |
null_aggr_bug.ads | Loading commit data... | |
oconst6.ads | Loading commit data... | |
opt1.ads | Loading commit data... | |
opt2.ads | Loading commit data... | |
opt3.ads | Loading commit data... | |
opt3_pkg.ads | Loading commit data... | |
opt4.ads | Loading commit data... | |
oversize.ads | Loading commit data... | |
pack10.ads | Loading commit data... | |
pack10_pkg.adb | Loading commit data... | |
pack10_pkg.ads | Loading commit data... | |
pack11.ads | Loading commit data... | |
pack12.ads | Loading commit data... | |
pack13.ads | Loading commit data... | |
pack2.ads | Loading commit data... | |
pack3.ads | Loading commit data... | |
pack33.ads | Loading commit data... | |
pack3_pkg.ads | Loading commit data... | |
pack4.ads | Loading commit data... | |
pack5.ads | Loading commit data... | |
pack6.ads | Loading commit data... | |
pack6_pkg.ads | Loading commit data... | |
pack7.ads | Loading commit data... | |
pack8.ads | Loading commit data... | |
pack8_pkg.ads | Loading commit data... | |
pack9.ads | Loading commit data... | |
preelab.ads | Loading commit data... | |
private1-sub.ads | Loading commit data... | |
private1.ads | Loading commit data... | |
private2.ads | Loading commit data... | |
private2_pkg.ads | Loading commit data... | |
private_with.ads | Loading commit data... | |
renaming1.ads | Loading commit data... | |
renaming2.ads | Loading commit data... | |
renaming2_pkg1.ads | Loading commit data... | |
renaming2_pkg2.ads | Loading commit data... | |
renaming2_pkg3.ads | Loading commit data... | |
renaming2_pkg4.adb | Loading commit data... | |
renaming2_pkg4.ads | Loading commit data... | |
rep_clause1.ads | Loading commit data... | |
rep_clause2.ads | Loading commit data... | |
rep_clause3.ads | Loading commit data... | |
rep_clause4.ads | Loading commit data... | |
rep_clause5.ads | Loading commit data... | |
restricted_pkg.ads | Loading commit data... | |
root-level_1-level_2.ads | Loading commit data... | |
root-level_1.ads | Loading commit data... | |
root-level_2.ads | Loading commit data... | |
root.ads | Loading commit data... | |
self_class.ads | Loading commit data... | |
size_attribute1.ads | Loading commit data... | |
size_attribute1_pkg1.adb | Loading commit data... | |
size_attribute1_pkg1.ads | Loading commit data... | |
size_attribute1_pkg2.adb | Loading commit data... | |
size_attribute1_pkg2.ads | Loading commit data... | |
size_clause1.ads | Loading commit data... | |
size_clause2.ads | Loading commit data... | |
size_clause3.ads | Loading commit data... | |
size_clause4.ads | Loading commit data... | |
small_alignment.ads | Loading commit data... | |
specs.exp | Loading commit data... | |
sso1.ads | Loading commit data... | |
sso2.ads | Loading commit data... | |
static_initializer.ads | Loading commit data... | |
static_initializer2.ads | Loading commit data... | |
static_initializer3.ads | Loading commit data... | |
static_initializer4.ads | Loading commit data... | |
static_initializer5.ads | Loading commit data... | |
static_initializer5_pkg.ads | Loading commit data... | |
storage.ads | Loading commit data... | |
sync_iface_test.ads | Loading commit data... | |
tag1.ads | Loading commit data... | |
tag2.ads | Loading commit data... | |
task1.ads | Loading commit data... | |
uc1.ads | Loading commit data... | |
uc2.ads | Loading commit data... | |
unchecked_convert1.ads | Loading commit data... | |
unchecked_convert2.ads | Loading commit data... | |
unchecked_union1.ads | Loading commit data... | |
unchecked_union2.ads | Loading commit data... | |
universal_fixed.ads | Loading commit data... | |
variant_part.ads | Loading commit data... | |
varsize_return.ads | Loading commit data... | |
varsize_return2.ads | Loading commit data... | |
varsize_return2_pkg.adb | Loading commit data... | |
varsize_return2_pkg.ads | Loading commit data... | |
varsize_return_pkg1.adb | Loading commit data... | |
varsize_return_pkg1.ads | Loading commit data... | |
varsize_return_pkg2.adb | Loading commit data... | |
varsize_return_pkg2.ads | Loading commit data... | |
vfa1.ads | Loading commit data... | |
vfa2.ads | Loading commit data... | |
volatile1.ads | Loading commit data... | |
warnstar.ads | Loading commit data... | |
weak1.ads | Loading commit data... | |
with_containers.ads | Loading commit data... |