gcc/ChangeLog:
* rtl.h (decl_default_tls_model): Move prototype from here...
* output.h: ...to here.
* c-decl.c: Do not include rtl.h.
* c-pragma.c: Likewise.
* c-parser.c: Likewise.
* c-gimplify.c: Likewise. And also not hard-reg-set.
* c-common.c: Do not include rtl.h. Include tm_p.h and add a
FIXME note for it. Add a FIXME note for expr.h.
* config/i386/i386-protos.h (ix86_enum_va_list, ix86_fn_abi_va_list,
ix86_canonical_va_list_type): Make visible even if RTX_CODE is not
defined.
cp/ChangeLog:
* decl.c: Do not include rtl.h
* semantics.c: Likewise.
ada/ChangeLog:
* gcc-interface/utils.c: Do not include rtl.h.
fortran/ChangeLog:
* trans-common.c: Do not include rtl.h, include output.h instead.
* trans-decl.c: Likewise.
From-SVN: r159856
* gcc-interface/utils.c: Do not include function.h, pointer-set.h,
and gimple.h. Explain why rtl.h has to be included.
(handle_vector_size_attribute): Call reconstruct_complex_type directly.
* gcc-interface/targtyps.c: Do not include tm_p.h
* gcc-interface/utils2.c: Do not include flags.h.
* gcc-interface/trans.c: Do not include expr.h. Include rtl.h instead,
and explain why it has to be included.
* gcc-interface/misc.c: Do not include expr.h, libfuncs.h, cgraph.h,
and optabs.h.
Include function.h and explain why. Explain why except.h is included.
(enumerate_modes): Remove unused function.
* gcc-interface/gigi.h (enumerate_modes): Remove prototype.
* gcc-interface/Make-lang.in: Update dependencies.
From-SVN: r159844
gcc/
* tree.h (build_call_list): Remove.
* tree.c (build_call_list): Remove.
gcc/ada/
* gcc-interface/trans.c (call_to_gnu): Use build_call_vec instead of
build_call_list.
* gcc-interface/utils.c (build_function_stub): Likewise.
gcc/cp/
* tree.c (build_min_non_dep_call_vec): Update comment.
gcc/java/
* expr.c (expand_java_multianewarray): Use build_call_vec instead of
build_call_list.
(pop_arguments): Return a VEC instead of a tree. Take a method type
rather than a list of argument types.
(rewrite_rule): Change signature. of rewrite_arglist member.
(rewrite_arglist_getcaller): Update signature.
(rewrite_arglist_getclass): Likewise.
(maybe_rewrite_invocation): Update for rewrite_arglist change.
(build_known_method_ref): Take a VEC instead of a tree.
(invoke_build_dtable): Likewise.
(expand_invoke): Update calls to pop_arguments. Use build_call_vec
instead of build_call_list.
(build_jni_stub): Use build_call_vec instead of build_call_list.
* java-tree.h (maybe_rewrite_invocation): Update declaration.
(build_known_method_ref): Likewise.
(invoke_build_dtable): Likewise.
From-SVN: r159548
* gcc-interface/utils.c (update_pointer_to): Return early if the old
pointer already points to the new type. Chain the old pointer and its
variants at the end of new pointer's chain after updating them.
From-SVN: r159309
* uintp.h (UI_Lt): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do the size
computation in sizetype.
<E_Array_Subtype>: Use unified handling for all index types. Do not
generate MAX_EXPR-based expressions, only COND_EXPR-based ones. Add
bypass for PATs.
(annotate_value): Change test for negative values.
(validate_size): Apply test for negative values on GNAT nodes.
(set_rm_size): Likewise.
* gcc-interface/misc.c (gnat_init): Set unsigned types for sizetypes.
* gcc-interface/utils.c (rest_of_record_type_compilation): Change test
for negative values.
(max_size) <MINUS_EXPR>: Do not reassociate a COND_EXPR on the LHS.
(builtin_type_for_size): Adjust definition of signed_size_type_node.
* gcc-interface/utils2.c (compare_arrays): Optimize comparison of
lengths against zero.
From-SVN: r158466
* gcc-interface/gigi.h (enum standard_datatypes): Add new values
ADT_sbitsize_one_node and ADT_sbitsize_unit_node.
(sbitsize_one_node): New macro.
(sbitsize_unit_node): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Fix
latent bug in the computation of subrange_p. Fold wider_p predicate.
(cannot_be_superflat_p): Use an explicitly signed 64-bit type to do
the final comparison.
(make_aligning_type): Build real negation and use sizetype throughout
the offset computation.
(maybe_pad_type): Do not issue the warning when the new size expression
is too complex.
(annotate_value) <INTEGER_CST>: Simplify code handling negative values.
* gcc-interface/misc.c (gnat_init): Initialize sbitsize_one_node and
sbitsize_unit_node.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Fold
double negation.
(gnat_to_gnu) <N_Free_Statement>: Likewise.
* gcc-interface/utils.c (convert): Use sbitsize_unit_node.
* gcc-interface/utils2.c (compare_arrays): Compute real lengths and use
constants in sizetype. Remove dead code and tweak comments. Generate
equality instead of inequality comparisons for zero length tests.
From-SVN: r158461
* gcc-interface/gigi.h (gnat_init_decl_processing): Delete.
* gcc-interface/decl.c (gnat_to_gnu_entity): Constify a few variables.
<object>: Do not create the fake PARM_DECL if no debug info is needed.
Do not create the corresponding VAR_DECL of a CONST_DECL for debugging
purposes if no debug info is needed.
Fix formatting. Reorder and add comments.
* gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Reference>: Constify
variable and remove obsolete comment.
* gcc-interface/utils.c (convert_vms_descriptor64): Tweak comment.
(convert_vms_descriptor32): Likewise.
(convert): Remove dead code.
<UNCONSTRAINED_ARRAY_REF>: Pass the field instead of its name to build
the reference to the P_ARRAY pointer.
<POINTER_TYPE>: Likewise.
(maybe_unconstrained_array) <UNCONSTRAINED_ARRAY_TYPE>: Likewise.
(gnat_init_decl_processing): Delete, move contents to...
* gcc-interface/misc.c (gnat_init): ...here.
From-SVN: r158428
* gcc-interface/decl.c (gnat_to_gnu_entity): Use boolean_type_node in
lieu of integer_type_node for boolean operations.
(choices_to_gnu): Likewise.
* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
(Loop_Statement_to_gnu): Likewise.
(establish_gnat_vms_condition_handler): Likewise.
(Exception_Handler_to_gnu_sjlj): Likewise.
(gnat_to_gnu): Likewise.
(build_unary_op_trapv): Likewise.
(build_binary_op_trapv): Likewise.
(emit_range_check): Likewise.
(emit_index_check): Likewise.
(convert_with_check): Likewise.
* gcc-interface/utils.c (convert_vms_descriptor64): Likewise.
(convert_vms_descriptor32): Likewise.
(convert_vms_descriptor): Likewise.
* gcc-interface/utils2.c (nonbinary_modular_operation): Likewise.
(compare_arrays): Use boolean instead of integer constants.
(build_binary_op) <TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR,
TRUTH_OR_EXPR, TRUTH_XOR_EXPR>: New case. Check that the result type
is a boolean type.
<GE_EXPR, LE_EXPR, GT_EXPR, LT_EXPR>: Remove obsolete assertion.
<EQ_EXPR, NE_EXPR>: Check that the result type is a boolean type.
<PREINC/PREDECREMENT_EXPR, POSTINC/POSTDECREMENT_EXPR>: Delete.
<TRUTH_NOT_EXPR>: Check that the result type is a boolean type.
(build_unary_op): Use boolean_type_node in lieu of integer_type_node
for boolean operations.
(fill_vms_descriptor): Likewise. Fix formatting nits.
From-SVN: r158411
* gcc-interface/cuintp.c (UI_To_gnu): Fix long line.
* gcc-interface/gigi.h (MARK_VISITED): Skip objects of constant class.
(process_attributes): Delete.
(post_error_ne_num): Change parameter name.
* gcc-interface/decl.c (gnat_to_gnu_entity): Do not force debug info
with -g3. Remove a couple of obsolete lines. Minor tweaks.
If type annotating mode, operate on trees to compute the adjustment to
the sizes of tagged types. Fix long line.
(cannot_be_superflat_p): Tweak head comment.
(annotate_value): Fold local constant.
(set_rm_size): Fix long line.
* gcc-interface/trans.c (Identifier_to_gnu): Rework comments.
(Attribute_to_gnu): Fix long line.
<Attr_Size>: Remove useless assertion.
Reorder statements. Use size_binop routine.
(Loop_Statement_to_gnu): Use build5 in lieu of build_nt.
Create local variables for the label and the test. Tweak comments.
(Subprogram_Body_to_gnu): Reset cfun to NULL.
(Compilation_Unit_to_gnu): Use the Sloc of the Unit node.
(process_inlined_subprograms): Integrate into...
(Compilation_Unit_to_gnu): ...this.
(gnat_to_gnu): Fix long line.
(post_error_ne_num): Change parameter name.
* gcc-interface/utils.c (process_attributes): Static-ify.
<ATTR_MACHINE_ATTRIBUTE>: Set input_location before proceeding.
(create_type_decl): Add comment.
(create_var_decl_1): Process the attributes after adding the VAR_DECL
to the current binding level.
(create_subprog_decl): Likewise for the FUNCTION_DECL.
(end_subprog_body): Do not reset cfun to NULL.
(build_vms_descriptor32): Fix long line.
(build_vms_descriptor): Likewise.
(handle_nonnull_attribute): Likewise.
(convert_vms_descriptor64): Likewise.
* gcc-interface/utils2.c (fill_vms_descriptor): Fix long line.
(gnat_protect_expr): Fix thinko.
From-SVN: r158390
* gcc-interface/trans.c (gigi): Do not start statement group.
(Compilation_Unit_to_gnu): Set current_function_decl to NULL.
Start statement group and push binding level here...
(gnat_to_gnu) <N_Compilation_Unit>: ...and not here.
Do not push fake contexts at top level. Remove redundant code.
(call_to_gnu): Rename a local variable and constify another.
* gcc-interface/utils.c (gnat_pushlevel): Fix formatting nits.
(set_current_block_context): Set it as the group's block.
(gnat_init_decl_processing): Delete unrelated init code.
(end_subprog_body): Use NULL_TREE.
From-SVN: r158370
* gimple.c (walk_gimple_op) <GIMPLE_ASSIGN>: Do not request a pure
rvalue on the RHS if the LHS is of a non-renamable type.
* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Fold result.
ada/
* gcc-interface/ada-tree.h (TYPE_BY_REFERENCE_P): Delete.
(DECL_CONST_ADDRESS_P): New macro.
(SET_DECL_ORIGINAL_FIELD_TO_FIELD): Likewise.
(SAME_FIELD_P): Likewise.
* gcc-interface/decl.c (constructor_address_p): New static function.
(gnat_to_gnu_entity) <object>: Set DECL_CONST_ADDRESS_P according to
the return value of above function.
(gnat_to_gnu_entity) <E_Record_Type>: Force BLKmode for all types
passed by reference.
<E_Record_Subtype>: Likewise.
Set TREE_ADDRESSABLE on the type if it passed by reference.
(make_packable_type): Use SET_DECL_ORIGINAL_FIELD_TO_FIELD.
(create_field_decl_from): Likewise.
(substitute_in_type): Likewise.
(purpose_member_field): Use SAME_FIELD_P.
* gcc-interface/misc.c (must_pass_by_ref): Test TREE_ADDRESSABLE.
* gcc-interface/trans.c (lvalue_required_p): Add ADDRESS_OF_CONSTANT
parameter and adjust recursive calls.
<N_Explicit_Dereference>: New case.
<N_Object_Declaration>: Return 1 if the object is of a class-wide type.
Adjust calls to lvalue_required_p. Do not return the initializer of a
DECL_CONST_ADDRESS_P constant if an lvalue is required for it.
(call_to_gnu): Delay issuing error message for a misaligned actual and
avoid the associated back-end assertion. Test TREE_ADDRESSABLE.
(gnat_gimplify_expr) <ADDR_EXPR>: Handle non-static constructors.
* gcc-interface/utils.c (make_dummy_type): Set TREE_ADDRESSABLE if the
type is passed by reference.
(convert) <CONSTRUCTOR>: Convert in-place in more cases.
* gcc-interface/utils2.c (build_cond_expr): Drop TYPE_BY_REFERENCE_P.
(build_simple_component_ref): Use SAME_FIELD_P.
From-SVN: r158254
* gcc-interface/trans.c (Identifier_to_gnu): Use boolean variable.
(call_to_gnu): Test gigi's flag TYPE_BY_REFERENCE_P instead of calling
front-end's predicate Is_By_Reference_Type. Use consistent order and
remove ??? comment. Use original conversion in all cases, if any.
* gcc-interface/utils.c (make_dummy_type): Minor tweak.
(convert): Use local copy in more cases.
<INDIRECT_REF>: Remove deactivated code.
(unchecked_convert): Use a couple of local copies.
From-SVN: r158216
* gcc-interface/trans.c (lvalue_required_for_attribute_p): New static
function.
(lvalue_required_p) <N_Attribute_Reference>: Call it.
(gnat_to_gnu) <N_Selected_Component>: Prevent build_component_ref from
folding the result only if lvalue_required_for_attribute_p is true.
* gcc-interface/utils.c (maybe_unconstrained_array): Pass correctly
typed constant to build_component_ref.
(unchecked_convert): Likewise.
* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
(build_allocator): Likewise.
From-SVN: r158202
* gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.
* gcc-interface/decl.c (maybe_variable): Do not set TREE_STATIC on _REF
node. Use the type of the operand to set TREE_READONLY.
* gcc-interface/trans.c (Identifier_to_gnu): Do not set TREE_STATIC on
_REF node. Do not overwrite TREE_READONLY.
(call_to_gnu): Rename local variable and fix various nits. In the
copy-in/copy-out case, build the SAVE_EXPR manually.
(convert_with_check): Call protect_multiple_eval in lieu of save_expr
and fold the computations.
(protect_multiple_eval): Always save entire fat pointers.
(maybe_stabilize_reference): Minor tweaks.
(gnat_stabilize_reference_1): Likewise. Do not deal with tcc_constant,
tcc_type and tcc_statement.
* gcc-interface/utils.c (convert_to_fat_pointer): Call
protect_multiple_eval in lieu of save_expr.
(convert): Minor tweaks.
(maybe_unconstrained_array): Do not set TREE_STATIC on _REF node.
(builtin_type_for_size): Call gnat_type_for_size directly.
* gcc-interface/utils2.c (contains_save_expr_p): Delete.
(contains_null_expr): Likewise
(gnat_build_constructor): Do not call it.
(compare_arrays): Deal with all side-effects, use protect_multiple_eval
instead of gnat_stabilize_reference to protect the operands.
(nonbinary_modular_operation): Call protect_multiple_eval in lieu of
save_expr.
(maybe_wrap_malloc): Likewise.
(build_allocator): Likewise.
(build_unary_op) <INDIRECT_REF>: Do not set TREE_STATIC on _REF node.
(gnat_mark_addressable): Rename parameter.
From-SVN: r158156
* tree.h (TREE_ADDRESSABLE): Document its effect for function types.
* calls.c (expand_call): Pass the function type to aggregate_value_p.
* function.c (aggregate_value_p): Do not honor DECL_BY_REFERENCE on
the target function of a CALL_EXPR. Honor TREE_ADDRESSABLE on the
function type instead. Reorder and simplify checks.
* gimplify.c (gimplify_modify_expr_rhs) <WITH_SIZE_EXPR>: New case.
ada/
* gcc-interface/ada-tree.h (TYPE_RETURNS_UNCONSTRAINED_P): Rename into.
(TYPE_RETURN_UNCONSTRAINED_P): ...this.
(TYPE_RETURNS_BY_REF_P): Rename into.
(TYPE_RETURN_BY_DIRECT_REF_P): ...this.
(TYPE_RETURNS_BY_TARGET_PTR_P): Delete.
* gcc-interface/gigi.h (create_subprog_type): Adjust parameter names.
(build_return_expr): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>:
Rename local variables. If the return Mechanism is By_Reference, pass
return_by_invisible_ref_p to create_subprog_type instead of toggling
TREE_ADDRESSABLE. Test return_by_invisible_ref_p in order to annotate
the mechanism. Use regular return for contrained types with non-static
size and return by invisible reference for unconstrained return types
with default discriminants. Update comment.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): If the function
returns by invisible reference, turn the RESULT_DECL into a pointer.
Do not handle DECL_BY_REF_P in the CICO case here.
(call_to_gnu): Remove code handling return by target pointer. For a
function call, if the return type has non-constant size, generate the
assignment with an INIT_EXPR.
(gnat_to_gnu) <N_Return_Statement>: Remove dead code in the CICO case.
If the function returns by invisible reference, build the copy return
operation manually.
(add_decl_expr): Initialize the variable with an INIT_EXPR.
* gcc-interface/utils.c (create_subprog_type): Adjust parameter names.
Adjust for renaming of macros. Copy the node only when necessary.
(create_subprog_decl): Do not toggle TREE_ADDRESSABLE on the return
type, only change DECL_BY_REFERENCE on the RETURN_DECL.
(convert_from_reference): Delete.
(is_byref_result): Likewise.
(gnat_genericize_r): Likewise.
(gnat_genericize): Likewise.
(end_subprog_body): Do not call gnat_genericize.
* gcc-interface/utils2.c (build_binary_op) <INIT_EXPR>: New case.
(build_return_expr): Adjust parameter names, logic and comment.
From-SVN: r158139
* exp_pakd.adb (Create_Packed_Array_Type): Always use a modular type
if the size is small enough. Propagate the alignment if there is an
alignment clause on the original array type.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>
Deal with under-aligned packed array types. Copy the size onto the
justified modular type and don't lay it out again. Likewise for the
padding type built for other under-aligned subtypes.
* gcc-interface/utils.c (finish_record_type): Do not set a default mode
on the type.
From-SVN: r158056
* sem_util.adb (Set_Debug_Info_Needed): For an E_Class_Wide_Subtype,
also set the flag on the Equivalent_Type.
* gcc-interface/utils.c (finish_record_type): Replace DO_NOT_FINALIZE
parameter with DEBUG_INFO_P. Rename FIELDLIST into FIELD_LIST.
(rest_of_record_type_compilation): Rename FIELDLIST into FIELD_LIST.
(build_vms_descriptor32): Adjust call to finish_record_type.
(build_vms_descriptor): Likewise.
(build_unc_object_type): Likewise.
* decl.c (gnat_to_gnu_entity): Adjust calls to finish_record_type and
components_to_record.
(make_packable_type): Adjust call to finish_record_type.
(maybe_pad_type): Likewise. Tweak condition.
(components_to_record): Likewise. Replace DO_NOT_FINALIZE parameter
with MAYBE_UNUSED. Adjust recursive call.
(create_variant_part_from): Adjust call to finish_record_type. Do not
call rest_of_record_type_compilation on the new record types.
* trans.c (gigi): Adjust call to finish_record_type.
* gigi.h (finish_record_type): Adjust prototype and comment.
(rest_of_record_type_compilation): Adjust comment.
From-SVN: r154515
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Pass the list
of attributes when building the corresponding variable of a constant.
* gcc-interface/utils.c (create_var_decl_1): Do not process attributes
for constants.
From-SVN: r154458
* gcc-interface/utils.c (MAX_FIXED_MODE_SIZE): Delete.
(create_field_decl): Update description. In a packed record, round
the size up to a byte boundary only if the field's type has BLKmode.
* gcc-interface/gigi.h (create_field_decl): Update description.
From-SVN: r153755
* gcc-interface/utils.c (convert): When converting to a padded type
with an inner type of self-referential size, pad the expression before
doing the unchecked conversion.
From-SVN: r152935
ada/
* gcc-interface/ada-tree.h (TYPE_REPRESENTATIVE_ARRAY): New language
specific node. Representative array type for VECTOR_TYPE entities.
* gcc-interface/utils.c (handle_vector_type_attribute): New handler.
Turn an ARRAY_TYPE entity into a VECTOR_TYPE.
(gnat_types_compatible_p): Handle VECTOR_TYPEs.
(convert): Likewise. Arrange to produce VECTOR_CST out of constant
array aggregates for VECTOR_TYPE entities.
(unchecked_convert): Likewise.
(maybe_vector_array): New function. If EXP has VECTOR_TYPE, return EXP
converted to the associated TYPE_REPRESENTATIVE_ARRAY.
(handle_pure_attribute, handle_sentinel_attribute,
handle_noreturn_attribute, handle_malloc_attribute,
handle_vector_size_attribute): Replace uses of qE format by qs.
Remove GCC_DIAG_STYLE definition.
* gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Convert
vector input to representative array type on entry.
<N_Op_Eq, etc>: Likewise.
* gcc-interface/gigi.h (maybe_vector_array): Declare.
(VECTOR_TYPE_P): New predicate.
* gcc-interface/misc.c (gnat_print_type): Handle VECTOR_TYPE.
testsuite/
* gnat.dg/sse_nolib.adb: New testcase.
From-SVN: r152165
* exp_dbug.ads (Packed Array Encoding): Document the new encoding for
the unconstrained case.
* gcc-interfaces/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Implement
the encoding. Do not give a name to the pointer type to the XUT type.
* gcc-interfaces/utils.c (gnat_pushdecl): Propagate DECL_ORIGINAL_TYPE
for fat pointer types, if any. Make sure DECL_ARTIFICIAL is cleared
on nodes with DECL_ORIGINAL_TYPE set.
(update_pointer_to): Set DECL_ORIGINAL_TYPE to the original pointer
for fat pointer types. Make sure DECL_ARTIFICIAL is cleared.
From-SVN: r151697
* gimplify.c (prepare_gimple_addressable): New static function.
(gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
it addressable.
(gimplify_addr_expr): Invoke it similarly on the operand instead of
manually fiddling with it.
ada/
* gcc-interface/trans.c (call_to_gnu): Tidy.
(gnat_to_gnu) <N_Slice>: Set TYPE_ARRAY_MAX_SIZE if the slice has
non-constant size but the array itself has constant size.
* gcc-interface/utils.c (convert_vms_descriptor64): Fix type
consistency error.
(convert_vms_descriptor32): Likewise.
From-SVN: r151082
* gcc-interface/utils.c (convert): In the padded case, do the final
conversion as an unchecked conversion if the underlying types are
array types with variable size.
From-SVN: r150965
2009-07-23 Olivier Hainque <hainque@adacore.com>
* g-ssinty.ads: New unit. GNAT.SSE.Internal_Types. Factorize
low level internal type definitions for distinct higher level
binding development activities (user type definitions and
operations).
* gnat_rm.texi: Document it.
* g-ssvety.ads: Use it.
* gcc-interface/Makefile.in: (x86 32/64 linux, cygwin32 sections): Add
g-ssinty.o to EXTRA_GNATRTL_NONTASKING_OBJS.
* gcc-interface/utils.c (gnat_internal_attribute_table): Add entry
for the "may_alias" attribute.
2009-07-23 Thomas Quinot <quinot@adacore.com>
* scos.ads: Minor typo fix
* gcc-interface/decl.c (validate_alignment): For the case of an
implicit array base type, look for alignment clause on first subtype.
Code clean up.
2009-07-23 Ed Schonberg <schonberg@adacore.com>
* sem.adb (Walk_Library_Units): Handle properly the case where a unit
in the context depends on the spec of the main unit, by delaying
processing of the main unit body until all other units have been
processed.
From-SVN: r149993
2009-07-17 Richard Guenther <rguenther@suse.de>
PR c/40401
* tree-pass.h (pass_diagnose_omp_blocks): Declare.
(pass_warn_unused_result): Likewise.
(TODO_set_props): Remove.
* omp-low.c (diagnose_omp_structured_block_errors): Change to
run as a pass.
(pass_diagnose_omp_blocks): Define.
* c-decl.c (pop_file_scope): Do not finalize the CU here.
(c_gimple_diagnostics_recursively): Remove.
(finish_function): Do not call it.
(c_write_global_declarations): Continue after errors.
Finalize the CU here.
* c-gimplify.c (c_genericize): Do not gimplify here.
* c-common.c (c_warn_unused_result): Move ...
* tree-cfg.c (do_warn_unused_result): ... here.
(run_warn_unused_result): New function.
(gate_warn_unused_result): New function.
(pass_warn_unused_result): New pass.
* c-common.h (c_warn_unused_result): Remove.
* flags.h (flag_warn_unused_result): Declare.
* c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
* opts.c (flag_warn_unused_result): Initialize to false.
* toplev.c (compile_file): Add comment.
* omp-low.c (create_omp_child_function): Do not register
the function with the frontend.
(diagnose_omp_structured_block_errors): Prepare to be
called as optimization pass.
(gate_diagnose_omp_blocks): New function.
(pass_diagnose_omp_blocks): New pass.
* cgraph.h (cgraph_optimize): Remove.
(cgraph_analyze_function): Likewise.
* cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
* cgraphunit.c (cgraph_lower_function): Lower nested functions
before their parents here.
(cgraph_finalize_function): Not here.
(cgraph_analyze_function): Gimplify functions here.
(cgraph_finalize_compilation_unit): Continue after errors.
Optimize the callgraph from here.
(cgraph_optimize): Make static.
* langhooks.c (write_global_declarations): Finalize the CU.
* gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
(gimplify_function_tree): Assert we gimplify only once.
Set PROP_gimple_any property.
* tree-nested.c (gimplify_all_functions): New function.
(lower_nested_functions): Gimplify all nested functions.
* gimple.h (diagnose_omp_structured_block_errors): Remove.
* passes.c (init_optimization_passes): Add pass_warn_unused_result
and pass_diagnose_omp_blocks after gimplification. Do not
set TODO_set_props on all_lowering_passes.
(execute_one_pass): Do not handle TODO_set_props.
* Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
(gimplify.o): Add tree-pass.h dependency.
* tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
(copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
(unsave_r): Likewise.
* c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
temporary variable.
cp/
* decl.c (finish_function): Do not emit unused result warnings
from here.
* cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
c_warn_unused_result_pass.
* semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
* optimize.c (clone_body): Clone in GENERIC.
(maybe_clone_body): Do not clear DECL_SAVED_TREE.
* decl2.c (cp_write_global_declarations): Fix body test.
Do not call cgraph_optimize.
* Make-lang.in (optimize.o): Add tree-iterator.h dependency.
* method.c (use_thunk): Register thunk with
cgraph_finalize_function.
* error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
java/
* java-gimplify.c (java_genericize): Do not gimplify here.
But replace all local references.
(java_gimplify_expr): Do not replace local references here.
(java_gimplify_modify_expr): Likewise.
* jcf-parse.c (java_parse_file): Do not finalize the CU or
optimize the cgraph here.
* decl.c (java_replace_reference): Make static.
(java_replace_references): New function.
(end_java_method): Clear base_decl_map.
* java-tree.h (java_replace_references): Declare.
(java_replace_reference): Remove.
ada/
* utils.c (end_subprog_body): Revert to pre-tuples state. Remove
unused parameter.
(gnat_gimplify_function): Do not gimplify here.
Fold into its only caller and remove.
(gnat_builtin_function): Adjust for end_subprog_body signature change.
(gnat_write_global_declarations): Also finalize the CU.
* misc.c (gnat_parse_file): Do not finalize the CU here.
* trans.c (gigi): Revert to pre-tuples state.
(Subprogram_Body_to_gnu): Adjust for end_subprog_body signature
change.
* gigi.h (end_subprog_body): Remove unused parameter.
fortran/
* f95-lang.c (gfc_be_parse_file): Do not finalize the CU here.
* trans-decl.c (gfc_gimplify_function): Remove.
(build_entry_thunks): Do not gimplify here.
(create_main_function): Likewise.
(gfc_generate_function_code): Likewise.
* g++.dg/rtti/crash4.C: New testcase.
* g++.dg/torture/20090706-1.C: Likewise.
* gcc.dg/redecl-17.c: Likewise.
* gfortran.dg/missing_optional_dummy_5.f90: Adjust pattern.
* gcc.dg/declspec-9.c: Expect extra error.
* gcc.dg/declspec-10.c: Likewise.
* gcc.dg/declspec-11.c: Likewise.
* gcc.dg/redecl-10.c: Expect extra warnings.
* gcc.target/i386/pr39082-1.c: Adjust diagnostic location.
* gcc.target/i386/pr39545-1.c: Likewise.
* g++.dg/ext/asm3.C: Expect more errors.
* g++.dg/gomp/block-1.C: Likewise.
* g++.dg/gomp/block-2.C: Likewise.
* g++.dg/gomp/block-3.C: Likewise.
* g++.dg/gomp/block-5.C: Likewise.
* g++.old-deja/g++.jason/report.C: Expect extra warnings.
* g++.dg/warn/unused-result1.C: XFAIL.
From-SVN: r149750
* cgraphunit.c (cgraph_finalize_compilation_unit): Call
finalize_size_functions before further processing.
* stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
(variable_size): Call self_referential_size on size expressions
that contain a PLACEHOLDER_EXPR.
(size_functions): New static variable.
(copy_self_referential_tree_r): New static function.
(self_referential_size): Likewise.
(finalize_size_functions): New global function.
* tree.c: Include tree-inline.h.
(push_without_duplicates): New static function.
(find_placeholder_in_expr): New global function.
(substitute_in_expr) <tcc_declaration>: Return the replacement object
on equality.
<tcc_expression>: Likewise.
<tcc_vl_exp>: If the replacement object is a constant, try to inline
the call in the expression.
* tree.h (finalize_size_functions): Declare.
(find_placeholder_in_expr): Likewise.
(FIND_PLACEHOLDER_IN_EXPR): New macro.
(substitute_placeholder_in_expr): Update comment.
* tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
is true.
(copy_tree_body_r): Likewise.
(copy_tree_body): New static function.
(maybe_inline_call_in_expr): New global function.
* tree-inline.h (struct copy_body_data): Add do_not_unshare field.
(maybe_inline_call_in_expr): Declare.
* Makefile.in (tree.o): Depend on TREE_INLINE_H.
(stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
GIMPLE_H.
ada/
* gcc-interface/decl.c: Include tree-inline.h.
(annotate_value) <CALL_EXPR>: Try to inline the call in the expression.
* gcc-interface/utils.c (max_size) <CALL_EXPR>: Likewise.
* gcc-interface/utils2.c: Include tree-inline.
(known_alignment) <CALL_EXPR>: Likewise.
From-SVN: r149112
2009-06-26 Laurent GUERBY <laurent@guerby.net>
* tb-gcc.c (trace_callback): Use char* instead of void*.
* gcc-interface/misc.c (enumerate_modes): Make loop compatible
with C++.
* gcc-interface/trans.c (parm_attr): Rename to parm_attr_d.
Change all uses.
* gcc-interface/utils.c (new, class, template): Rename to be
compatible with C++. Change all uses.
* gcc-interface/decl.c (new): Likewise.
From-SVN: r148975
ada/
* gcc-interface/utils.c (convert) <CONSTRUCTOR case>: When converting
to the packable version of the type, clear TREE_STATIC/TREE_CONSTANT
on the result if at least one of the input fields couldn't be output
as a static constant any more.
testsuite/
* gnat.dg/nested_float_packed.ads: New test.
Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r148049
* dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
for bounds.
(print_int_cst_bounds_in_octal_p): Likewise.
(dbxout_type): Adjust calls to above functions. Be prepared to deal
with subtypes.
* dwarf2out.c (base_type_die): Likewise.
(is_subrange_type): Delete.
(subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
(modified_type_die): Call subrange_type_for_debug_p on subtypes.
* fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
the destination type is boolean.
(build_range_check): Do not special-case subtypes.
(fold_sign_changed_comparison): Likewise.
(fold_unary): Likewise.
* langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
* langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
* tree.c (subrange_type_for_debug_p): New predicate based on the former
is_subrange_type.
* tree.h (subrange_type_for_debug_p): Declare.
* tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
(convert_affine_scev): Remove call to above function.
(chrec_convert_aggressive): Likewise.
* tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
false for conversions involving subtypes.
* tree-vrp.c (vrp_val_max): Do not special-case subtypes.
(vrp_val_min): Likewise.
(needs_overflow_infinity): Likewise.
(extract_range_from_unary_expr): Likewise.
ada/
* gcc-interface/ada-tree.h (TYPE_GCC_MIN_VALUE, TYPE_GCC_MAX_VALUE):
New macros.
(TYPE_RM_VALUES): Likewise.
(TYPE_RM_SIZE): Rewrite in terms of TYPE_RM_VALUES.
(SET_TYPE_RM_SIZE): New macro.
(TYPE_RM_MIN_VALUE, TYPE_RM_MAX_VALUE): Likewise.
(SET_TYPE_RM_SIZE, SET_TYPE_RM_MAX_VALUE): Likewise.
(TYPE_MIN_VALUE, TYPE_MAX_VALUE): Redefine.
* gcc-interface/gigi.h (create_range_type): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type>
Use SET_TYPE_RM_MAX_VALUE to set the upper bound on the UMT type.
<E_Signed_Integer_Subtype>: Build a regular integer type first and
then set the RM bounds. Use SET_TYPE_RM_SIZE to set the RM size.
<E_Floating_Point_Subtype>: Build a regular floating-point type first
and then set the RM bounds.
<E_Array_Type>: Use create_range_type instead of build_range_type.
<E_Array_Subtype>: Build a regular integer type first and then set
the RM bounds for the extra subtype.
<E_String_Literal_Subtype>: Use create_range_type instead of
build_range_type.
<all>: Set the RM bounds for enumeration types and the GCC bounds for
floating-point types.
(set_rm_size): Use SET_TYPE_RM_SIZE to set the RM size.
(make_type_from_size) <INTEGER_TYPE>: Use SET_TYPE_RM_{MIN,MAX}_VALUE
to set the bounds. Use SET_TYPE_RM_SIZE to set the RM size.
(substitute_in_type) <INTEGER_TYPE>: Deal with GCC bounds for domain
types and with RM bounds for subtypes.
* gcc-interface/misc.c (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
(gnat_print_type) <REAL_TYPE>: New case.
<ENUMERAL_TYPE>: Fall through to above case.
(gnat_get_subrange_bounds): New function.
* gcc-interface/trans.c (add_decl_expr): Mark the trees rooted as
TYPE_RM_MIN_VALUE and TYPE_RM_MAX_VALUE, if any.
* gcc-interface/utils.c (gnat_init_decl_processing): Use precision 8
for booleans. Adjust and use SET_TYPE_RM_SIZE to set the RM size.
(create_range_type): New function.
(create_param_decl): Build a regular integer type first and then set
the RM bounds for the extra subtype.
(unchecked_convert): Remove kludge for 'Valid.
* gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Convert
the index to sizetype instead of TYPE_DOMAIN.
From-SVN: r147563
* ttypes.ads (Target_Double_Float_Alignment): New variable.
(Target_Double_Scalar_Alignment): Likewise.
* get_targ.ads (Get_Strict_Alignment): Adjust external name.
(Get_Double_Float_Alignment): New imported function.
(Get_Double_Scalar_Alignment): Likewise.
* layout.adb (Set_Elem_Alignment): Take into account specific caps for
the alignment of "double" floating-point types and "double" or larger
scalar types, as parameterized by Target_Double_Float_Alignment and
Target_Double_Scalar_Alignment respectively.
* gcc-interface/gigi.h (double_float_alignment): Declare.
(double_scalar_alignment): Likewise.
(is_double_float_or_array): Likewise.
(is_double_scalar_or_array): Likewise.
(get_target_double_float_alignment): Likewise.
(get_target_double_scalar_alignment): Likewise.
* gcc-interface/targtyps.c (get_strict_alignment): Rename into...
(get_target_strict_alignment): ...this.
(get_target_double_float_alignment): New function.
(get_target_double_scalar_alignment): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Test the presence of an alignment clause for under-aligned integer
types. Take into account specific caps for the alignment of "double"
floating-point types and "double" or larger scalar types, as
parameterized by Target_Double_Float_Alignment and
Target_Double_Scalar_Alignment respectively.
(validate_alignment): Likewise.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Alignment>: Likewise.
(gigi): Initialize double_float_alignment and double_scalar_alignment.
* gcc-interface/utils.c (double_float_alignment): New global variable.
(double_scalar_alignment): Likewise.
(is_double_float_or_array): New predicate.
(is_double_scalar_or_array): Likewise.
From-SVN: r146675
* gcc-interface/gigi.h (create_index_type): Adjust head comment.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Use front-end predicates to compute signedness and precision.
<E_String_Literal_Subtype>: Fold range type.
Make sure to set longest_float_type_node to a scalar type.
(elaborate_entity): Use consistent Constraint_Error spelling.
(substitute_in_type) <INTEGER_TYPE>: Always copy the type.
* gcc-interface/misc.c (gnat_print_type) <INTEGER_TYPE>: Use brief
output for the modulus, if any.
<ENUMERAL_TYPE>: Likewise for the RM size.
* gcc-interface/trans.c (gnat_to_gnu): Use consistent Constraint_Error
spelling.
* gcc-interface/utils.c (finish_record_type): Really test the alignment
of BLKmode bit-fields to compute their addressability.
(create_index_type): Adjust comments.
(create_param_decl): Create the biased subtype manually.
* gcc-interface/utils2.c (build_component_ref): Use consistent
Constraint_Error spelling.
From-SVN: r146644
* gcc-interface/decl.c (gnat_to_gnu_entity): Compute is_type predicate
on entry. Defer common processing for types. Reorder and clean up.
Compute the equivalent GNAT node and the default size for types only.
<E_Modular_Integer_Type>: Directly use Esize for the type's precision.
<E_Access_Type>: For an unconstrained designated type, do not pretend
that a dummy type is always made.
<all> Fix nits in comments.
(validate_size): Fix formatting nits and comments.
(set_rm_size): Likewise.
* gcc-interface/utils.c (create_param_decl): Replace bogus argument
passed to TARGET_PROMOTE_PROTOTYPES hook.
From-SVN: r146549
* fe.h (Get_External_Name): Declare.
* gcc-interface/gigi.h (concat_id_with_name): Rename to...
(concat_name): ...this.
* gcc-interface/decl.c (gnat_to_gnu_entity): Rename gnu_entity_id to
gnu_entity_name and adjust for above renaming.
<E_Access_Type>: Use create_concat_name to get the name of the various
types associated with unconstrained array types.
(make_aligning_type): Adjust for above renaming.
(maybe_pad_type): Likewise.
(components_to_record): Likewise. Use get_identifier_with_length for
the encoding of the variant.
(get_entity_name): Use get_identifier_with_length.
(create_concat_name): Likewise. Use Get_External_Name if no suffix.
Do not fiddle with Name_Buffer.
(concat_id_with_name): Rename to...
(concat_name): ...this. Use get_identifier_with_length. Do not fiddle
with Name_Buffer.
* gcc-interface/utils.c (rest_of_record_type_compilation): Adjust for
above renaming.
From-SVN: r146547
* ada-tree.h (TYPE_RM_SIZE_NUM): Delete.
(TYPE_RM_SIZE): Access TYPE_LANG_SLOT_1 directly for integral types.
* decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type>: Remove useless
support code for packed array types and assert its uselessness.
<E_Signed_Integer_Subtype>: Reuse entity identifier in more places and
adjust for TYPE_RM_SIZE change.
<all> Fix nits in comments. Use Original_Array_Type accessor instead
of Associated_Node_For_Itype accessor for packed array types.
(make_packable_type): Likewise.
(maybe_pad_type): Likewise.
(set_rm_size): Likewise. Rework conditional statement. Adjust for
TYPE_RM_SIZE change.
(make_type_from_size): Adjust for TYPE_RM_SIZE change.
(rm_size): Fix nits in comments. Rework conditional statements.
* misc.c (gnat_print_type): Adjust for TYPE_RM_SIZE change.
* trans.c (Attribute_to_gnu): Fix nits in comments.
* utils.c (gnat_init_decl_processing): Use more appropriate function
to initialize the size_type_node. Adjust for TYPE_RM_SIZE change.
From-SVN: r146530
* gcc-interface/ada-tree.h (DECL_HAS_REP_P): Delete.
* gcc-interface/decl.c (gnat_to_gnu_entity): Add support for extension
of types with unknown discriminants.
(substitute_in_type): Rewrite and restrict to formal substitutions.
* gcc-interface/utils.c (create_field_decl): Do not set DECL_HAS_REP_P.
(update_pointer_to): Update comment.
From-SVN: r146447
2009-04-10 Tristan Gingold <gingold@adacore.com>
* gcc-interface/Makefile.in, gcc-interface/utils.c: Include "rtl.h" to
avoid compile time warnings.
Do not add gcc/config in include search list while compiling the RTS.
Pragma Thread_Local_Storage is available on any target.
From-SVN: r145891
* gcc-interface/gigi.h (standard_datatypes): Remove ADT_void_type_decl.
(void_type_decl_node): Remove.
(init_gigi_decls): Likewise.
(gnat_install_builtins): Declare.
(record_builtin_type): Likewise.
(create_type_stub_decl): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Void>: Use void_type.
(gnat_to_gnu_entity) <E_Array_Type>: Make fat and thin pointer types
artificial.
<E_Array_Subtype>: Use the index types, not only their name, in the
record giving the names of the bounds, if any.
For a packed array type, make it artificial only if the base type
was artificial as well. Remove redundant statement.
(gnat_to_gnu_entity) <E_Incomplete_Type>: Do not create TYPE_DECL for
dummy types.
Use create_type_stub_decl to build the TYPE_STUB_DECL of types.
(rest_of_type_decl_compilation_no_defer): Likewise.
* gcc-interface/misc.c (gnat_printable_name): Add missing guard.
* gcc-interface/utils.c (make_dummy_type): Always create TYPE_STUB_DECL
and use create_type_stub_decl to build it.
(gnat_pushdecl): Rewrite condition.
(gnat_install_builtins): Remove bogus declaration.
(record_builtin_type): New function.
(finish_record_type): Use create_type_stub_decl to build TYPE_STUB_DECL
of types.
(create_type_stub_decl): New function.
(create_type_decl): Assert that the type is not dummy. If the type
hasn't been named yet, equate the TYPE_STUB_DECL to the created node.
(build_vms_descriptor32): Do not create TYPE_DECL for the descriptor.
(build_vms_descriptor): Likewise.
(init_gigi_decls): Delete and move bulk of code to...
* gcc-interface/trans.c (gigi): ...here. Use record_builtin_type.
(emit_range_check): Add gnat_node parameter.
(emit_index_check): Likewise.
(emit_check): Likewise.
(build_unary_op_trapv): Likewise.
(build_binary_op_trapv): Likewise.
(convert_with_check): Likewise.
(Attribute_to_gnu): Adjust calls for above changes.
(call_to_gnu): Likewise.
(gnat_to_gnu): Likewise.
(assoc_to_constructor): Likewise.
(pos_to_constructor): Likewise.
(Sloc_to_locus): Set BUILTINS_LOCATION for Standard_Location nodes.
(process_type): Do not create TYPE_DECL for dummy types.
From-SVN: r145660
2008-10-06 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (can_fold_for_view_convert_p): New predicate.
(unchecked_convert): Use it to disable problematic folding with
VIEW_CONVERT_EXPR in the general case. Always disable it for the
special VIEW_CONVERT_EXPR built for integral types and cope with
its addressability issues by preserving the first conversion.
From-SVN: r140902
PR ada/37585
* gcc-interface/utils.c (create_subprog_decl): Disable inlining for
inlined external functions if they contain a nested function not
declared inline.
From-SVN: r140511
* gcc-interface/ada-tree.h (DECL_PARM_ALT): Now DECL_PARM_ALT_TYPE.
* gcc-interface/decl.c (gnat_to_gnu_param): Fix formatting, simplify
and adjust for above renaming.
* gcc-interface/utils.c (convert_vms_descriptor): Likewise. Add new
gnu_expr_alt_type parameter. Convert the expression to it instead
of changing its type in place.
(build_function_stub): Adjust call to above function.
From-SVN: r138518
2008-08-01 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Remove dead
code. Do not get full definition of deferred constants with address
clause for a use. Do not ignore deferred constant definitions with
address clause. Ignore constant definitions already marked with the
error node.
<object>: Remove obsolete comment. For a deferred constant with
address clause, get the initializer from the full view.
* gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Definition_Clause>:
Rework and remove obsolete comment.
<N_Object_Declaration>: For a deferred constant with address clause,
mark the full view with the error node.
* gcc-interface/utils.c (convert_to_fat_pointer): Rework and fix
formatting nits.
From-SVN: r138513
2008-08-01 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (convert_vms_descriptor): Add gnu_expr_alt_type
parameter.
Convert the expression to it instead of changing its type in place.
(build_function_stub): Adjust call to above function.
From-SVN: r138492
2008-07-31 Geert Bosch <bosch@adacore.com>
* arit64.c:
New file implementing __gnat_mulv64 signed integer multiplication with
overflow checking
* fe.h (Backend_Overflow_Checks_On_Target): Define for use by Gigi
* gcc-interface/gigi.h:
(standard_types): Add ADT_mulv64_decl
(mulv64_decl): Define subprogram declaration for __gnat_mulv64
* gcc-interface/utils.c:
(init_gigi_decls): Add initialization of mulv64_decl
* gcc-interface/trans.c:
(build_unary_op_trapv): New function
(build_binary_op_trapv): New function
(gnat_to_gnu): Use the above functions instead of
build_{unary,binary}_op
* gcc-interface/Makefile.in
(LIBGNAT_SRCS): Add arit64.c
(LIBGNAT_OBJS): Add arit64.o
From-SVN: r138384
PR ada/36554
* dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
ada/
* back_end.adb (Call_Back_End): Pass Standard_Boolean to gigi.
* gcc-interface/gigi.h (gigi): Take new standard_boolean parameter.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Subtype>:
Set precision to 1 for subtype of BOOLEAN_TYPE.
(set_rm_size): Set TYPE_RM_SIZE_NUM for BOOLEAN_TYPE.
(make_type_from_size): Deal with BOOLEAN_TYPE.
* gcc-interface/misc.c (gnat_print_type): Likewise.
* gcc-interface/trans.c (gigi): Take new standard_boolean parameter.
Set boolean_type_node as its translation in the table, as well
as boolean_false_node for False and boolean_true_node for True.
* gcc-interface/utils.c (gnat_init_decl_processing): Create custom
8-bit boolean_type_node and set its TYPE_RM_SIZE_NUM.
(create_param_decl): Deal with BOOLEAN_TYPE.
(build_vms_descriptor): Likewise.
(build_vms_descriptor64): Likewise.
(convert): Deal with BOOLEAN_TYPE like with ENUMERAL_TYPE.
From-SVN: r138348
2008-07-30 Doug Rupp <rupp@adacore.com>
* gigi.h (build_vms_descriptor64): New function prototype.
(fill_vms_descriptor): Modified function prototype.
* utils.c (build_vms_descriptor64): New function.
* utils2.c (fill_vms_descriptor): Fix handling on 32bit systems.
* trans.c (call_to_gnu): Call fill_vms_descriptor with new third
argument.
* decl.c (gnat_to_gnu_tree): For By_Descriptor mech, build both a
64bit and 32bit descriptor and save the 64bit version as an alternate
TREE_TYPE in the parameter.
(make_type_from_size) <RECORD_TYPE>: Use the appropriate mode for the
thin pointer.
* ada-tree.h (DECL_PARM_ALT, SET_DECL_PARM_ALT): New macros.
From-SVN: r138307