* tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
* tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
(visit_reference_op_load): Do walk vuse-vdef chains on
vn_reference_lookup.
(visit_reference_op_store): But do not here.
* tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
vn_reference_lookup.
(vn_lookup_with_vuses): But do so here.
Samuel Tardieu [Tue, 15 Apr 2008 11:59:39 +0000 (11:59 +0000)]
re PR ada/28733 (GNAT crash while compiling Ada-2005 code)
2008-04-15 Samuel Tardieu <sam@rfc1149.net>
Gary Dismukes <dismukes@adacore.com>
gcc/ada/
PR ada/28733
* sem_ch8.adb (Analyze_Use_Package): Do not allow "use" of something
which is not an entity (and hence not a package).
(End_Use_Package): Ditto.
Co-Authored-By: Gary Dismukes <dismukes@adacore.com>
From-SVN: r134313
Samuel Tardieu [Tue, 15 Apr 2008 11:02:58 +0000 (11:02 +0000)]
[multiple changes]
2008-04-15 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
PR ada/16086
* sem_ch12.adb (Analyze_Formal_Subprogram): The default can be any
protected operation that matches the signature, not only an entry, a
regular subprogram or a literal.
Eric Botcazou [Tue, 15 Apr 2008 07:18:21 +0000 (07:18 +0000)]
ada-tree.h (DECL_BY_COMPONENT_PTR_P): Use DECL_LANG_FLAG_3.
* ada-tree.h (DECL_BY_COMPONENT_PTR_P): Use DECL_LANG_FLAG_3.
* decl.c (gnat_to_gnu_entity) <object>: Call maybe_pad_type only
if a size or alignment is specified. Do not take into account
alignment promotions for the computation of the object's size.
<type>: Call maybe_pad_type only if a size or alignment is specified.
(maybe_pad_type): Really reuse the RM_Size of the original type if
requested.
* trans.c (Attribute_to_gnu): Fix a couple of nits.
* utils2.c (build_binary_op) <MODIFY_EXPR>: Merge related conditional
statements. Use the padded view of the type when copying between
padded objects of the same underlying type.
Samuel Tardieu [Mon, 14 Apr 2008 12:11:06 +0000 (12:11 +0000)]
re PR ada/16098 (Illegal program not detected, RM 13.1(6))
gcc/ada/
PR ada/16098
* sem_prag.adb (Error_Pragma_Ref): New.
(Process_Convention): Specialized message for non-local
subprogram renaming. Detect the problem in homonyms as well.
Samuel Tardieu [Mon, 14 Apr 2008 12:10:16 +0000 (12:10 +0000)]
re PR ada/15915 (Illegal program not detected, RM 13.11(15))
gcc/ada/
PR ada/15915
* sem_util.ads, sem_util.adb (Denotes_Variable): New function.
* sem_ch12.adb (Instantiate_Object): Use it.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Ensure that
storage pool denotes a variable as per RM 13.11(15).
Jerry DeLisle [Mon, 14 Apr 2008 00:43:32 +0000 (00:43 +0000)]
re PR fortran/35882 (Miscounted continuation lines when interspersed with data)
2008-04-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/35882
* options.c (gfc_init_options): Set the default maximum continuation
lines to 255 for both free and fixed form source for warnings.
(gfc_handle_option): Set -std=f95 fixed form max continuations to 19 and
the -std=f95 free form max continuations to 39 for warnings.
* scanner.c (gfc_next_char_literal): Adjust the current_line number only
if it is less than the current locus.
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.