diff options
author | Olivier Hainque <hainque@adacore.com> | 2007-08-14 10:40:11 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-08-14 10:40:11 +0200 |
commit | 3355aa3e72ad9cc9cad23709967d82e897fb6bdf (patch) | |
tree | e79464f26ada57355226bd2875fdb9b7d91b2633 /gcc/ada/misc.c | |
parent | c690a2ec7301f5089252456d4fb764787c1a6fdb (diff) | |
download | gcc-3355aa3e72ad9cc9cad23709967d82e897fb6bdf.zip gcc-3355aa3e72ad9cc9cad23709967d82e897fb6bdf.tar.gz gcc-3355aa3e72ad9cc9cad23709967d82e897fb6bdf.tar.bz2 |
re PR ada/19037 (constant renaming creates new constant)
2007-08-14 Olivier Hainque <hainque@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* targtyps.c (get_target_maximum_default_alignment): New function.
Maximum alignment
that the compiler might choose by default for a type or object.
(get_target_default_allocator_alignment): New function. Alignment known
to be honored by the target default allocator.
(get_target_maximum_allowed_alignment): New function. Maximum alignment
we might accept for any type or object on the target.
(get_target_maximum_alignment): Now synonym of maximum_default_alignment
* gigi.h (get_target_maximum_default_alignment): Declare new function.
(get_target_default_allocator_alignment): Likewise.
(get_target_maximum_allowed_alignment): Likewise.
PR ada/19037
* decl.c (gnat_to_gnu_entity) <object>: Except for the renaming of the
result of a function call, first try to use a stabilized reference for
a constant renaming too.
(validate_alignment): Use target_maximum_allowed_alignment instead of
MAX_OFILE_ALIGNMENT as the upper bound to what we accept.
(gnat_to_gnu_entity): Use common nodes directly.
(gnat_to_gnu_entity) <object>: Pick the values of the type to annotate
alignment and size for the object.
(lvalue_required_p): Handle N_Parameter_Association like N_Function_Call
and N_Procedure_Call_Statement.
(takes_address): Rename to lvalue_required_p, add third parameter
'aliased' and adjust recursive calls.
<N_Indexed_Component>: Update 'aliased' from the array type.
<N_Selected_Component>: New case.
<N_Object_Renaming_Declaration>: New Likewise.
(Identifier_to_gnu): Adjust for above changes.
(maybe_stabilize_reference) <CONST_DECL>: New case.
* utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Look through conversion
between type variants.
(build_simple_component_ref): Likewise.
(build_call_alloc_dealloc): Use target_default_allocator_alignment
instead of BIGGEST_ALIGNMENT as the threshold to trigger the super
aligning type circuitry for allocations from the default storage pool.
(build_allocator): Likewise.
(build_simple_component_ref): Manually fold the reference for a
constructor if the record type contains a template.
* utils.c (value_zerop): Delete.
(gnat_init_decl_processing): Emit debug info for common types.
(rest_of_record_type_compilation): If a union contains a field
with a non-constant qualifier, treat it as variable-sized.
(finish_record_type): Give the stub TYPE_DECL a name.
(rest_of_record_type_compilation): Likewise.
(convert) <CONSTRUCTOR>: New case. Build a new constructor if
types are equivalent array types.
(create_field_decl): Claim fields of any ARRAY_TYPE are addressable,
even if the type is not passed by reference.
(static_ctors, static_dtors): Delete.
(end_subprog_body): Do not record constructors and destructors.
(build_global_cdtor): Delete.
(gnat_write_global_declarations): Do not call build_global_cdtor.
* lang-specs.h: If TARGET_VXWORKS_RTP is defined, append -mrtp when
-fRTS=rtp is specified.
If CONFIG_DUAL_EXCEPTIONS is 1, append -fsjlj when -fRTS=sjlj is
specified.
* misc.c (gnat_init_gcc_eh): Use __gnat_eh_personality_sj for the name
of the personality function with SJLJ exceptions.
* raise-gcc.c (PERSONALITY_FUNCTION): Use __gnat_eh_personality_sj for
the name of the personality function with SJLJ exceptions.
From-SVN: r127422
Diffstat (limited to 'gcc/ada/misc.c')
-rw-r--r-- | gcc/ada/misc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c index 5f1ae85..a59b1d0 100644 --- a/gcc/ada/misc.c +++ b/gcc/ada/misc.c @@ -511,7 +511,9 @@ gnat_init_gcc_eh (void) right exception regions. */ using_eh_for_cleanups (); - eh_personality_libfunc = init_one_libfunc ("__gnat_eh_personality"); + eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS + ? "__gnat_eh_personality_sj" + : "__gnat_eh_personality"); lang_eh_type_covers = gnat_eh_type_covers; lang_eh_runtime_type = gnat_eh_runtime_type; default_init_unwind_resume_libfunc (); |