Thomas Koenig [Sun, 13 Apr 2008 20:15:58 +0000 (20:15 +0000)]
re PR libfortran/32972 (performance of pack/unpack)
2008-04-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR libfortran/32972
PR libfortran/32512
configure.ac: Add test for uintptr_t.
configure: Regenerated.
config.h.in: Regenerated.
* libgfortran.h: GFC_DTYPE_DERIVED_1: New macro.
GFC_DTYPE_DERIVED_2: New macro.
GFC_DTYPE_DERIVED_4: New macro.
GFC_DTYPE_DERIVED_8: New macro.
GFC_DTYPE_DERIVED_16: New macro.
GFC_UNALIGNED_2: New macro.
GFC_UNALIGNED_4: New macro.
GFC_UNALIGNED_8: New macro.
GFC_UNALIGNED_16: New macro.
intptr_t: Define if we don't have it.
uintptr_t: Likewise.
* runtime/backtrace.c (show_backtrace): Use intptr_t.
* intrinsics/signal.c (signal_sub): Likewise.
(signal_sub_int): Likewise.
(alarm_sub_int_i4): Likewise.
* intrinsics/spread_generic.c (spread): Use the integer
routines for handling derived types of sizes 1, 2, 4, 8 and 16
if the alignment of all pointers is correct.
(spread_scalar): Likewise.
* intrinsics/pack_generic.c (pack): Likewise.
Use GFD_DTYPE_TYPE_SIZE to avoid nested switch statements.
* intrinsics/unpack_generic.c (unpack1): Likewise.
(unpack0): Likewise.
* runtime/in_pack_generic.c (internal_pack): Likewise.
* runtime/in_unpack_generic.c (internal_unpack): Likewise.
2008-04-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/32972
PR libfortran/32512
* gfortran.dg/internal_pack_1.f90: Add test for derived type.
* gfortran.dg/intrinsic_spread_1.f90: Likewise.
* gfortran.dg/intrinsic_pack_1.f90: Likewise.
* gfortran.dg/intrinsic_unpack_1.f90: Likewise.
* config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
operand 0 constraint, not "=".
H.J. Lu [Fri, 11 Apr 2008 15:52:19 +0000 (15:52 +0000)]
re PR middle-end/35897 (DSE doesn't support targets with wide registers)
2008-04-11 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/35897
* dse.c (store_info): Change positions_needed to unsigned
HOST_WIDE_INT.
(lowpart_bitmask): New.
(record_store): Cast to unsigned HOST_WIDE_INT for
positions_needed. Assert width <= size of positions_needed *
CHAR_BIT. Call lowpart_bitmask to initialize positions_needed.
(check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask. Call
lowpart_bitmask to set mask.
* config/bfin/constraints.md: New file.
* config/bfin/bfin.md: Include it.
(adddi3): Use satisfies_constraint functions instead of the old macros.
* config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
EXTRA_CONSTRAINT): Delete.
* config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
reg_or_neg7bit_operand): Use satisfies_constraint functions instead
of the old macros.
* config/bfin/bfin.c: Include "tm-constrs.h".
(bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
Use satisfies_constraint functions instead of the old macros.
* doc/md.texi (Blackfin Constraints): Update file name reference.
re PR target/35768 (gcc.c-torture/compile/20010226-1.c:22: ICE: in do_output_reload, at reload1.c:7331)
PR target/35768
* pa.md: Define mode iterator P. Define mode attribute dwc.
(dcacheflush): Update pattern to use iterator P and attribute dwc.
(icacheflush): Likewise.
* pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
!TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
Adam Nemet [Thu, 10 Apr 2008 18:28:45 +0000 (18:28 +0000)]
mips.md (GPR2): New mode iterator.
* config/mips/mips.md (GPR2): New mode iterator.
(seq): Add comment.
(*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
*sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
*slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
Rewrite these to take two modes, the mode of comparison and the
mode of the destination.
* config/mips/mips.c (mips_expand_scc): Instead of having
paradoxical subreg as destination, expand "narrowing" scc if mode
of comparison is SI and target is requested in DI mode.
(mips_emit_int_order_test): Update comment. Make mode of
comparison match CMP0 rather than TARGET. When creating inverse
target use mode of TARGET.
testsuite/
* gcc.target/mips/scc-2.c: New test.
* gcc.target/mips/scc-3.c: New test.
* gcc.target/mips/scc-4.c: New test.
* config/i386/i386.md (absneg): New code iterator.
(absnegprefix): New code attribute.
(<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
patterns using absneg code iterator.
(<code>tf2): Macroize expander from abstf2 and negtf2 patterns
using absneg code iterator.
(*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
*neg<mode>2 patterns using absneg code iterator.
(*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
*negextendsfdf2 patterns using absneg code iterator.
(*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
*negextendsfxf2 patterns using absneg code iterator.
(*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
*negextendsfdf2 patterns using absneg code iterator.
* config/i386/sse.md (<code><mode>2): Macroize expander from
abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
Jakub Jelinek [Wed, 9 Apr 2008 09:00:31 +0000 (11:00 +0200)]
list_read.c (snprintf): Define if HAVE_SNPRINTF isn't defined.
* io/list_read.c (snprintf): Define if HAVE_SNPRINTF isn't defined.
(nml_read_obj): Add nml_err_msg_size argument. Pass it down to
recursive call. Use snprintf instead of sprintf when %s nl->var_name
is used.
(nml_get_obj_data): Add nml_err_msg_size argument. Pass it down to
nml_read_obj call. Use snprintf instead of sprintf when %s
nl->var_name is used. Pass nml_err_msg to nml_parse_qualifier instead
of parse_err_msg array. Append " for namelist variable " and
nl->var_name to it.
(namelist_read): Increase size of nml_err_msg array to 200. Pass
sizeof nml_err_msg as extra argument to nml_get_obj_data.
decl.c (validate_size): Set minimum size for fat pointers same as access types.
2008-04-09 Doug Rupp <rupp@adacore.com>
* decl.c (validate_size): Set minimum size for fat pointers same as
access types. Code clean ups.
* gmem.c (xstrdup32): New macro for 32bit dup on VMS, noop otherwise
(__gnat_gmem_a2l_initialize): Dup exename into 32 bit memory on VMS
* s-auxdec-vms_64.ads, s-auxdec.ads (Short_Address_Size): New constant
* s-crtl.ads (malloc32) New function, alias for malloc
(realloc32) New function, alias for realloc
* socket.c (__gnat_new_socket_set): Malloc fd_set in 32 bits on VMS
* utils2.c (build_call_alloc_dealloc): Return call to short malloc if
allocator size is 32 and default pointer size is 64.
(find_common_type): Document assumption on t1/t2 vs lhs/rhs. Force use of
lhs type if smaller, whatever the modes.
* gigi.h (malloc32_decl): New macro definition
* utils.c (init_gigi_decls): New malloc32_decl
Various code clean ups.
* s-asthan-vms-alpha.adb (Process_AST.To_Address): Unchecked convert to
Task_Address vice System.Address.
* s-taspri-vms.ads: Import System.Aux_DEC
(Task_Address): New subtype of System.Aux_DEC.Short_Address
(Task_Address_Size): New constant size of System.Aux_DEC.Short_Address
* s-asthan-vms-alpha.adb (Process_AST.To_Address): Unchecked convert to
Task_Address vice System.Address.
* s-taprop-vms.adb (Timed_Delay): Always set the timer even if delay
expires now.
(To_Task_ID) Unchecked convert from Task_Adddress vice System.Address
(To_Address) Unchecked convert to Task_Address vice System.Address
Eric Botcazou [Tue, 8 Apr 2008 18:12:53 +0000 (18:12 +0000)]
gigi.h (standard_datatypes): Add ADT_fdesc_type and ADT_null_fdesc.
* gigi.h (standard_datatypes): Add ADT_fdesc_type and ADT_null_fdesc.
(fdesc_type_node): Define.
(null_fdesc_node): Likewise.
* decl.c (gnat_to_gnu_entity) <E_Access_Subprogram_Type>: If the target
uses descriptors for vtables and the type comes from a dispatch table,
return the descriptor type.
* trans.c (Attribute_to_gnu) <Attr_Unrestricted_Access>: If the target
uses descriptors for vtables and the type comes from a dispatch table,
build a descriptor in the static case and copy the existing one in the
non-static case.
(gnat_to_gnu) <N_Null>: If the target uses descriptors for vtables and
the type is a pointer-to-subprogram coming from a dispatch table,
return the null descriptor.
<N_Unchecked_Type_Conversion>: If the target uses descriptors for
vtables, the source type is the descriptor type and the target type
is a pointer type, first build the pointer.
* utils.c (init_gigi_decls): If the target uses descriptors for vtables
build the descriptor type and the null descriptor.
Eric Botcazou [Tue, 8 Apr 2008 12:25:49 +0000 (12:25 +0000)]
ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Only set it when bit-packed.
* ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Only set it when bit-packed.
* decl.c (gnat_to_gnu_entity): Adjust for above change.
<E_Record_Type>: Try to get a better form of the component for
packing, even if it has an integral mode.
<E_Record_Subtype>: Likewise.
* trans.c (gnat_to_gnu): Do not require BLKmode for the special
exception suppressing the final conversion between record types.
Co-Authored-By: Richard Kenner <kenner@adacore.com>
From-SVN: r134093
Eric Botcazou [Tue, 8 Apr 2008 11:41:59 +0000 (11:41 +0000)]
decl.c (gnat_to_gnu_entity): If -gnatd.a and not optimizing alignment for space...
* decl.c (gnat_to_gnu_entity) <object>: If -gnatd.a and not optimizing
alignment for space, promote the alignment of non-scalar variables with
no size and alignment.
* gigi.h (gnat_types_compatible_p): Declare.
* misc.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Set to above predicate.
* trans.c (gnat_to_gnu): Revert revision 129339 change. Minor cleanup.
* utils.c (gnat_types_compatible_p) : New predicate.
(convert): Use it throughout to test for cases where a mere view
conversion is sufficient.
* utils2.c (build_binary_op): Minor tweaks.
(build_unary_op): Likewise.
Kai Tietz [Tue, 8 Apr 2008 09:38:15 +0000 (09:38 +0000)]
Enable trampoline code for nx-protected stack Windows.
* config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
(MINGW_ENABLE_EXECUTE_STACK): New.
(IN_LIBGCC2): For libgcc include windows.h file for
function declarations.
* gnat.dg/parent_ltd_with-child_full_view.adb: New test.
* gnat.dg/rt1.adb: New test.
* gnat.dg/test_time_stamp.adb: New test.
* gnat.dg/specs/warn_star.ads: New test.
* gnat.dg/specs/aggr1.ads: New test.
* gnat.dg/parent_ltd_with-child_full_view.adb: New test.
* gnat.dg/rt1.adb: New test.
* gnat.dg/test_time_stamp.adb: New test.
* gnat.dg/specs/warn_star.ads: New test.
* gnat.dg/specs/aggr1.ads: New test.
Change name In_Default_Expression => In_Spec_Expression Change name...
Change name In_Default_Expression => In_Spec_Expression
Change name Analyze_Per_Use_Expression => Preanalyze_Spec_Expression
Change name Pre_Analyze_And_Resolve => Preanalyze_And_Resolve
* config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
__AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
instructions.
* config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
atmega103 device.
* bindgen.adb (Gen_Adainit_Ada): If the main program is a CIL function,
then use __gnat_set_exit_status to report the returned status code.
* comperr.adb (Compiler_Abort): Convert most bug boxes into clean error
messages on .NET, since some constructs of the language are not
properly supported.
* gnatlink.adb (Gnatlink): In case the command line is too long for the
.NET linker, gnatlink now concatenate all .il files and pass this to
ilasm.
* prj-pp.ads, prj-pp.adb (Pretty_Print): new parameters Id and Id_Tree
These optional parameters help preserve the casing of the project's name
when pretty-printing.
Ed Schonberg [Tue, 8 Apr 2008 06:57:48 +0000 (08:57 +0200)]
binde.adb (Gather_All_Links, [...]): units that are mentioned in limited_with_clauses to do create semantic...
2008-04-08 Ed Schonberg <schonberg@adacore.com>
* binde.adb (Gather_All_Links, Gather_Dependencies): units that are
mentioned in limited_with_clauses to do create semantic dependencies
even though they appear in the ali file.
Vincent Celier [Tue, 8 Apr 2008 06:57:10 +0000 (08:57 +0200)]
vms_conv.adb (Output_Version): Print "GNAAMP" instead of "GNAT when AAMP_On_Target is set.
2008-04-08 Vincent Celier <celier@adacore.com>
Robert Dewar <dewar@adacore.com>
* vms_conv.adb (Output_Version): Print "GNAAMP" instead of "GNAT when
AAMP_On_Target is set.
* vms_data.ads: Add NOxxx to style check switch list
Add entry COMPONENTS for -gnatVe
Add VMS qualifiers for -eL (/FOLLOW_LINKS_FOR_FILES) and --subdirs=
(/SUBDIRS=).
(GCC_Switches): Add /ALL_BACK_END_WARNINGS.
Add qualifiers for gnatmetric coupling options
Add note that -gnata enables all checks
Add entries [NO]PARAMETER_ORDER for -gnatw.p[P]
Fix inconsistency for VMS qualifier for the gnatpp '-rnb' option
New warning flag -gnatw.e
* usage.adb: Add entries for -gnaty+ -gnaty- -gnatyy
Add entry for -gnatyN (forgotten before)
Line for new warning switch -gnatw.p
New warning flag -gnatw.e
* gnat_ugn.texi: Add documentation fpr project file switch -aP
Document -gnaty - + y
Replace occurences of "package specification" with "package spec"
Define preprocessing symbols in documentation of gnatprep
Clarify reason for distinguishing overflow checking
Add documentation for project-aware tool switches -eL and --subdirs=
Complete list of configuration pragmas
Specify that, even when gnatmake switch -x is used, mains on the command
line need to be sources of project files.
Editing of gnatcheck/gnatmetric doc.
Add documentation for -gnatw.p/-gnatw.P
Add missing documentation for -fno-inline-functions.
Add documentation for -gnatw.e
* gnat_rm.texi: Add documentation for No_Default_Initialization
Replace occurences of "package specification" with "package spec"
Document use of * in Warnings Off string
Update documentation of alignment/component clauses.
Add documentation for Invalid_Value
Document new consistency rule for Optimize_Alignment
Add documentation for Precondition and Postcondition pragmas
Add documentation for Check and Check_Policy pragmas
Document new Enum_Val attribute
Remove requirement for static string in pragma Assert
Add documentation on GNAT.Time_Stamp
* ug_words: add entry for -gnatVe
Add entries for -gnat.p[P] /WARNINGS=[NO]PARAMETER_ORDER
Add entry for -gnatw.e
* debug.adb: Add missing documentation for d.a flag
Document new -gnatd.a switch.
Add documentation for new gnatmake debug switch -df
Vincent Celier [Tue, 8 Apr 2008 06:56:58 +0000 (08:56 +0200)]
a-direct.adb (Start_Search): Check for Name_Error before checking for Use_Error, as specified in the RM.
2008-04-08 Vincent Celier <celier@adacore.com>
* a-direct.adb (Start_Search): Check for Name_Error before checking for
Use_Error, as specified in the RM. Check if directory is open and raise
Use_Error if it is not.