1. 21 Jun, 2009 14 commits
    • re PR fortran/37577 ([meta-bug] change internal array descriptor format for… · dfb55fdc
      re PR fortran/37577 ([meta-bug] change internal array descriptor format for better syntax, C interop TR, rank 15)
      
      2009-06-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/37577
      	Port from fortran-dev
      	* runtime/in_pack_generic (internal_pack):  Remove unnecessary
      	test for stride == 0.
      	* runtime/in_unpack_generic.c (internal_unpack):  Likewise.
      	* intrinsics/iso_c_binding.c (c_f_pointer_u0):  Take care
      	of stride in "shape" argument.  Use array access macros for
      	accessing array descriptors.
      	* libgfortran.h (struct descriptor_dimension):  Change stride
      	to _stride, lbound to _lbound and ubound to _ubound.
      	(GFC_DIMENSION_LBOUND):  Use new name(s) in struct
      	descriptor_dimension.
      	(GFC_DIMENSION_UBOUND):  Likewise.
      	(GFC_DIMENSION_STRIDE):  Likewise.
      	(GFC_DIMENSION_EXTENT):  Likewise.
      	(GFC_DIMENSION_SET):  Likewise.
      	(GFC_DESCRIPTOR_LBOUND):  Likewise.
      	(GFC_DESCRIPTOR_UBOUND):  Likewise.
      	(GFC_DESCRIPTOR_EXTENT):  Likewise.
      	(GFC_DESCRIPTOR_STRIDE):  Likewise.
      	* io/transfer.c (transfer_array):  Use array access macros.
      	Use byte-sized strides.
      	* intrinsics/eoshift0.c (eoshift0):  Use array access
      	macros everywhere.
      	* m4/in_pack.m4 (internal_pack_'rtype_ccode`):  Use
      	array access macros for accessing array descriptors.
      	* m4/in_unpack.m4 (internal_unpack_'rtype_ccode`):
      	Likewise.
      	* m4/matmull.m4 (matmul_'rtype_code`):  Likewise.
      	* m4/matmul.m4 (matmul_'rtype_code`):  Likewise.
      	* m4/unpack.m4 (unpack0_'rtype_code`):  Likewise.
      	(unpack1_'rtype_code`):  Likewise.
      	* m4/ifunction_logical.m4 (name`'rtype_qual`_'atype_code): Likewise.
      	* m4/ifunction.m4 (name`'rtype_qual`_'atype_code): Use array access
      	macros everywhere.
      		* intrinsics/dtime.c (dtime_sub):  Use array access macros
      	for accessing array descriptors.
      	* intrinsics/cshift0 (cshift0):  Likewise.
      	* intrinsics/etime.c:  Likewise.  Remove redundant calculation
      	of rdim.
      	* m4/cshift0.m4 (cshift0_'rtype_code`):  Use array access macros
      	for accessing array descriptors.
      	* m4/pack.m4 (pack_'rtype_code`):  Likewise.
      	* m4/spread.m4 (spread_'rtype_code`):  Likewise.
      	(spread_scalar_'rtype_code`):  Likewise.
      	* m4/transpose.m4 (transpose_'rtype_code`):  Likewise.
      	* m4/iforeach.m4 (name`'rtype_qual`_'atype_code):  Likewise.
      	* m4/eoshift1.m4 (eoshift1):  Likewise.  Remove size argument,
      	calculate within function.
      	(eoshift1_'atype_kind`):  Remove size argument from call
      	to eoshift1.
      	(eoshift1_'atype_kind`_char):  Likewise.
      	(eoshift1_'atype_kind`_char4):  Likewise.
      	* m4/eoshift3.m4 (eoshift3):  Remove size argument, calculate
      	within function. Use array access macros for accessing array
      	descriptors.
      	(eoshift3_'atype_kind`):  Remove size argument from call
      	to eoshift1.
      	(eoshift3_'atype_kind`_char):  Likewise.
      	(eoshift3_'atype_kind`_char4):  Likewise.
      	* m4/shape.m4 (shape_'rtype_kind`):  Use array access macros
      	for accessing array descriptors.
      	* m4/cshift1.m4 (cshift1): Remove size argument, calculate
      	within function. Use array access macros for accessing array
      	descriptors.
      	(cshift1_'atype_kind`):  Remove size argument from call to
      	cshift1.
      	(cshift1_'atype_kind`_char):  Remove size argument from call to
      	cshift1.
      	(cshift1_'atype_kind`_char4):  Remove size argument from call to
      	cshift1.
      	* m4/reshape.m4 (reshape_'rtype_ccode`):  Use array access macros
      	for accessing array descriptors.
      	* m4/ifunction.m4 (name`'rtype_qual`_'atype_code):  Likewise.
      	* intrinsics/pack_generic.c (pack_internal):  Use array access
      	macros for accessing array descriptors.
      	(pack_s_internal):  Likewise.
      	* intrinsics/transpose_generic.c (transpose_internal):  Remove
      	size argument, calculate from array descriptor. Use array
      	access macros for accessing array descriptors.
      	(transpose):  Remove size argument from call.
      	(transpoe_char):  Likewise.
      	(transpose_char4):  Likewise.
      	* intrinsics/move_alloc.c (move_alloc):  Use array access macros
      	for accessing array descriptors.
      	* intrinsics/spread_generic.c (spread_internal):  Remove size
      	argument, calculate from array descriptor.  Use array access
      	macros for accessing array descriptors.
      	(spread_internal_scalar):  Likewise.
      	(spread):  Remove size argument from call to spread_internal.
      	(spread_char):  Mark argument source_length as unused.
      	Remove size argument from call to spread_internal.
      	(spread_char4):  Likewise.
      	(spread_char_scalar):  Likewise.
      	(spread_char4_scalar):  Likewise.
      	* intrinsics/unpack_generic.c (unpack_internal):  Use array access
      	macros for accessing array descriptors.
      	* intrinsics/eoshift2.c (eoshift2):  Remove size argument, calculate
      	from array descriptor instead.  Use array access macros for
      	accessing array descriptors.
      	(eoshift2_##N):  Remove size argument from call to eoshift2.
      	(eoshift2_##N_##char):  Likewise.
      	(eoshift2_##N_##char4):  Likewise.
      	* intrinsics/reshape_generic.c (reshape_internal):  Use array
      	access macross for accessing array descriptors.
      	* libgfortran.h:  Introduce new macros GFC_DIMENSION_LBOUND,
      	GFC_DIMENSION_UBOUND,GFC_DIMENSION_STRIDE, GFC_DIMENSION_EXTENT,
      	GFC_DIMENSION_SET, GFC_DESCRIPTOR_LBOUND, GFC_DESCRIPTOR_UBOUND,
      	GFC_DESCRIPTOR_EXTENT, GFC_DESCRIPTOR_EXTENT_BYTES,
      	GFC_DESCRIPTOR_STRIDE, GFC_DESCRIPTOR_STRIDE_BYTES
      	* runtime/in_pack_generic.c (internal_pack):  Use new macros
      	for array descriptor access.
      	* runtime/in_unpack_generic.c (internal_unpack):  Likewise.
      	* intrinsics/dtime.c (dtime_sub):  Likewise.
      	* intrinsics/cshift0 (cshift0):  Remove argument size,
      	calculate directly from the array descriptor.  Use new macros
      	for array descriptor access.
      	* cshift0_##N:  Remove shift argument in call to cshift0.
      	* cshift0_##N_char:  Mark array_length as unused.  Remove
      	array_length in call to cshift0.
      	* cshift0_##N_char4:  Likewise.
      	* intrisics/etime.c:  Use new macros for array descriptor access.
      	* intrinsics/stat.c (stat_i4_sub_0):  Likewise.
      	(stat_i8_sub_0):  Likewise.
      	(fstat_i4_sub):  Likewise.
      	(fstat_i8_sub):  Likewise.
      	* intrinsics/date_and_time.c (date_and_time):  Likewise.
      	(secnds):  Likewise.
      	(itime_i4):  Likewise.
      	(itime_i8):  Likewise.
      	(idate_i4):  Likewise.
      	(idate_i8):  Likewise.
      	(gmtime_i4):  Likewise.
      	(gmtime_i8):  Likewise.
      	(ltime_i4):  Likewise.
      	(litme_i8):  Likewise.
      	* intrinsics/associated.c (associated):  Likewise.
      	* intrinsics/eoshift0.c (eoshift0):  Likewise.
      	* intriniscs/size.c (size0):  Likewise.
      	* intrinsics/random.c (arandom_r4):  Likewise.
      	(arandom_r8):  Likewise.
      	(arandom_r10):  Likewise.
      	(arandom_r16):  Likewise.
      	(random_seed_i4):  Likewise.
      	(random_seed_i8):  Likewise.
      	* io/list_read.c (nml_parse_qualifier):  Likewise.
      	(nml_touch_nodes):  Likewise.
      	(nml_read_obj):  Likewise.
      	(get_name):  Likewise.
      	* io/transfer.c (transfer_array):  Likewise.
      	(init_loop_spec):  Likewise.
      	(st_set_nml_var_dim):  Likewise.
      	* io/write.c (nml_write_obj):  Likewise.
      	(obj_loop):  Likewise.
      	* generated/all_l1.c: Regenerated.
      	* generated/all_l16.c: Regenerated.
      	* generated/all_l2.c: Regenerated.
      	* generated/all_l4.c: Regenerated.
      	* generated/all_l8.c: Regenerated.
      	* generated/any_l1.c: Regenerated.
      	* generated/any_l16.c: Regenerated.
      	* generated/any_l2.c: Regenerated.
      	* generated/any_l4.c: Regenerated.
      	* generated/any_l8.c: Regenerated.
      	* generated/count_16_l.c: Regenerated.
      	* generated/count_1_l.c: Regenerated.
      	* generated/count_2_l.c: Regenerated.
      	* generated/count_4_l.c: Regenerated.
      	* generated/count_8_l.c: Regenerated.
      	* generated/cshift0_c10.c: Regenerated.
      	* generated/cshift0_c16.c: Regenerated.
      	* generated/cshift0_c4.c: Regenerated.
      	* generated/cshift0_c8.c: Regenerated.
      	* generated/cshift0_i1.c: Regenerated.
      	* generated/cshift0_i16.c: Regenerated.
      	* generated/cshift0_i2.c: Regenerated.
      	* generated/cshift0_i4.c: Regenerated.
      	* generated/cshift0_i8.c: Regenerated.
      	* generated/cshift0_r10.c: Regenerated.
      	* generated/cshift0_r16.c: Regenerated.
      	* generated/cshift0_r4.c: Regenerated.
      	* generated/cshift0_r8.c: Regenerated.
      	* generated/cshift1_16.c: Regenerated.
      	* generated/cshift1_4.c: Regenerated.
      	* generated/cshift1_8.c: Regenerated.
      	* generated/eoshift1_16.c: Regenerated.
      	* generated/eoshift1_4.c: Regenerated.
      	* generated/eoshift1_8.c: Regenerated.
      	* generated/eoshift3_16.c: Regenerated.
      	* generated/eoshift3_4.c: Regenerated.
      	* generated/eoshift3_8.c: Regenerated.
      	* generated/in_pack_c10.c: Regenerated.
      	* generated/in_pack_c16.c: Regenerated.
      	* generated/in_pack_c4.c: Regenerated.
      	* generated/in_pack_c8.c: Regenerated.
      	* generated/in_pack_i1.c: Regenerated.
      	* generated/in_pack_i16.c: Regenerated.
      	* generated/in_pack_i2.c: Regenerated.
      	* generated/in_pack_i4.c: Regenerated.
      	* generated/in_pack_i8.c: Regenerated.
      	* generated/in_pack_r10.c: Regenerated.
      	* generated/in_pack_r16.c: Regenerated.
      	* generated/in_pack_r4.c: Regenerated.
      	* generated/in_pack_r8.c: Regenerated.
      	* generated/in_unpack_c10.c: Regenerated.
      	* generated/in_unpack_c16.c: Regenerated.
      	* generated/in_unpack_c4.c: Regenerated.
      	* generated/in_unpack_c8.c: Regenerated.
      	* generated/in_unpack_i1.c: Regenerated.
      	* generated/in_unpack_i16.c: Regenerated.
      	* generated/in_unpack_i2.c: Regenerated.
      	* generated/in_unpack_i4.c: Regenerated.
      	* generated/in_unpack_i8.c: Regenerated.
      	* generated/in_unpack_r10.c: Regenerated.
      	* generated/in_unpack_r16.c: Regenerated.
      	* generated/in_unpack_r4.c: Regenerated.
      	* generated/in_unpack_r8.c: Regenerated.
      	* generated/matmul_c10.c: Regenerated.
      	* generated/matmul_c16.c: Regenerated.
      	* generated/matmul_c4.c: Regenerated.
      	* generated/matmul_c8.c: Regenerated.
      	* generated/matmul_i1.c: Regenerated.
      	* generated/matmul_i16.c: Regenerated.
      	* generated/matmul_i2.c: Regenerated.
      	* generated/matmul_i4.c: Regenerated.
      	* generated/matmul_i8.c: Regenerated.
      	* generated/matmul_l16.c: Regenerated.
      	* generated/matmul_l4.c: Regenerated.
      	* generated/matmul_l8.c: Regenerated.
      	* generated/matmul_r10.c: Regenerated.
      	* generated/matmul_r16.c: Regenerated.
      	* generated/matmul_r4.c: Regenerated.
      	* generated/matmul_r8.c: Regenerated.
      	* generated/maxloc0_16_i1.c: Regenerated.
      	* generated/maxloc0_16_i16.c: Regenerated.
      	* generated/maxloc0_16_i2.c: Regenerated.
      	* generated/maxloc0_16_i4.c: Regenerated.
      	* generated/maxloc0_16_i8.c: Regenerated.
      	* generated/maxloc0_16_r10.c: Regenerated.
      	* generated/maxloc0_16_r16.c: Regenerated.
      	* generated/maxloc0_16_r4.c: Regenerated.
      	* generated/maxloc0_16_r8.c: Regenerated.
      	* generated/maxloc0_4_i1.c: Regenerated.
      	* generated/maxloc0_4_i16.c: Regenerated.
      	* generated/maxloc0_4_i2.c: Regenerated.
      	* generated/maxloc0_4_i4.c: Regenerated.
      	* generated/maxloc0_4_i8.c: Regenerated.
      	* generated/maxloc0_4_r10.c: Regenerated.
      	* generated/maxloc0_4_r16.c: Regenerated.
      	* generated/maxloc0_4_r4.c: Regenerated.
      	* generated/maxloc0_4_r8.c: Regenerated.
      	* generated/maxloc0_8_i1.c: Regenerated.
      	* generated/maxloc0_8_i16.c: Regenerated.
      	* generated/maxloc0_8_i2.c: Regenerated.
      	* generated/maxloc0_8_i4.c: Regenerated.
      	* generated/maxloc0_8_i8.c: Regenerated.
      	* generated/maxloc0_8_r10.c: Regenerated.
      	* generated/maxloc0_8_r16.c: Regenerated.
      	* generated/maxloc0_8_r4.c: Regenerated.
      	* generated/maxloc0_8_r8.c: Regenerated.
      	* generated/maxloc1_16_i1.c: Regenerated.
      	* generated/maxloc1_16_i16.c: Regenerated.
      	* generated/maxloc1_16_i2.c: Regenerated.
      	* generated/maxloc1_16_i4.c: Regenerated.
      	* generated/maxloc1_16_i8.c: Regenerated.
      	* generated/maxloc1_16_r10.c: Regenerated.
      	* generated/maxloc1_16_r16.c: Regenerated.
      	* generated/maxloc1_16_r4.c: Regenerated.
      	* generated/maxloc1_16_r8.c: Regenerated.
      	* generated/maxloc1_4_i1.c: Regenerated.
      	* generated/maxloc1_4_i16.c: Regenerated.
      	* generated/maxloc1_4_i2.c: Regenerated.
      	* generated/maxloc1_4_i4.c: Regenerated.
      	* generated/maxloc1_4_i8.c: Regenerated.
      	* generated/maxloc1_4_r10.c: Regenerated.
      	* generated/maxloc1_4_r16.c: Regenerated.
      	* generated/maxloc1_4_r4.c: Regenerated.
      	* generated/maxloc1_4_r8.c: Regenerated.
      	* generated/maxloc1_8_i1.c: Regenerated.
      	* generated/maxloc1_8_i16.c: Regenerated.
      	* generated/maxloc1_8_i2.c: Regenerated.
      	* generated/maxloc1_8_i4.c: Regenerated.
      	* generated/maxloc1_8_i8.c: Regenerated.
      	* generated/maxloc1_8_r10.c: Regenerated.
      	* generated/maxloc1_8_r16.c: Regenerated.
      	* generated/maxloc1_8_r4.c: Regenerated.
      	* generated/maxloc1_8_r8.c: Regenerated.
      	* generated/maxval_i1.c: Regenerated.
      	* generated/maxval_i16.c: Regenerated.
      	* generated/maxval_i2.c: Regenerated.
      	* generated/maxval_i4.c: Regenerated.
      	* generated/maxval_i8.c: Regenerated.
      	* generated/maxval_r10.c: Regenerated.
      	* generated/maxval_r16.c: Regenerated.
      	* generated/maxval_r4.c: Regenerated.
      	* generated/maxval_r8.c: Regenerated.
      	* generated/minloc0_16_i1.c: Regenerated.
      	* generated/minloc0_16_i16.c: Regenerated.
      	* generated/minloc0_16_i2.c: Regenerated.
      	* generated/minloc0_16_i4.c: Regenerated.
      	* generated/minloc0_16_i8.c: Regenerated.
      	* generated/minloc0_16_r10.c: Regenerated.
      	* generated/minloc0_16_r16.c: Regenerated.
      	* generated/minloc0_16_r4.c: Regenerated.
      	* generated/minloc0_16_r8.c: Regenerated.
      	* generated/minloc0_4_i1.c: Regenerated.
      	* generated/minloc0_4_i16.c: Regenerated.
      	* generated/minloc0_4_i2.c: Regenerated.
      	* generated/minloc0_4_i4.c: Regenerated.
      	* generated/minloc0_4_i8.c: Regenerated.
      	* generated/minloc0_4_r10.c: Regenerated.
      	* generated/minloc0_4_r16.c: Regenerated.
      	* generated/minloc0_4_r4.c: Regenerated.
      	* generated/minloc0_4_r8.c: Regenerated.
      	* generated/minloc0_8_i1.c: Regenerated.
      	* generated/minloc0_8_i16.c: Regenerated.
      	* generated/minloc0_8_i2.c: Regenerated.
      	* generated/minloc0_8_i4.c: Regenerated.
      	* generated/minloc0_8_i8.c: Regenerated.
      	* generated/minloc0_8_r10.c: Regenerated.
      	* generated/minloc0_8_r16.c: Regenerated.
      	* generated/minloc0_8_r4.c: Regenerated.
      	* generated/minloc0_8_r8.c: Regenerated.
      	* generated/minloc1_16_i1.c: Regenerated.
      	* generated/minloc1_16_i16.c: Regenerated.
      	* generated/minloc1_16_i2.c: Regenerated.
      	* generated/minloc1_16_i4.c: Regenerated.
      	* generated/minloc1_16_i8.c: Regenerated.
      	* generated/minloc1_16_r10.c: Regenerated.
      	* generated/minloc1_16_r16.c: Regenerated.
      	* generated/minloc1_16_r4.c: Regenerated.
      	* generated/minloc1_16_r8.c: Regenerated.
      	* generated/minloc1_4_i1.c: Regenerated.
      	* generated/minloc1_4_i16.c: Regenerated.
      	* generated/minloc1_4_i2.c: Regenerated.
      	* generated/minloc1_4_i4.c: Regenerated.
      	* generated/minloc1_4_i8.c: Regenerated.
      	* generated/minloc1_4_r10.c: Regenerated.
      	* generated/minloc1_4_r16.c: Regenerated.
      	* generated/minloc1_4_r4.c: Regenerated.
      	* generated/minloc1_4_r8.c: Regenerated.
      	* generated/minloc1_8_i1.c: Regenerated.
      	* generated/minloc1_8_i16.c: Regenerated.
      	* generated/minloc1_8_i2.c: Regenerated.
      	* generated/minloc1_8_i4.c: Regenerated.
      	* generated/minloc1_8_i8.c: Regenerated.
      	* generated/minloc1_8_r10.c: Regenerated.
      	* generated/minloc1_8_r16.c: Regenerated.
      	* generated/minloc1_8_r4.c: Regenerated.
      	* generated/minloc1_8_r8.c: Regenerated.
      	* generated/minval_i1.c: Regenerated.
      	* generated/minval_i16.c: Regenerated.
      	* generated/minval_i2.c: Regenerated.
      	* generated/minval_i4.c: Regenerated.
      	* generated/minval_i8.c: Regenerated.
      	* generated/minval_r10.c: Regenerated.
      	* generated/minval_r16.c: Regenerated.
      	* generated/minval_r4.c: Regenerated.
      	* generated/minval_r8.c: Regenerated.
      	* generated/pack_c10.c: Regenerated.
      	* generated/pack_c16.c: Regenerated.
      	* generated/pack_c4.c: Regenerated.
      	* generated/pack_c8.c: Regenerated.
      	* generated/pack_i1.c: Regenerated.
      	* generated/pack_i16.c: Regenerated.
      	* generated/pack_i2.c: Regenerated.
      	* generated/pack_i4.c: Regenerated.
      	* generated/pack_i8.c: Regenerated.
      	* generated/pack_r10.c: Regenerated.
      	* generated/pack_r16.c: Regenerated.
      	* generated/pack_r4.c: Regenerated.
      	* generated/pack_r8.c: Regenerated.
      	* generated/product_c10.c: Regenerated.
      	* generated/product_c16.c: Regenerated.
      	* generated/product_c4.c: Regenerated.
      	* generated/product_c8.c: Regenerated.
      	* generated/product_i1.c: Regenerated.
      	* generated/product_i16.c: Regenerated.
      	* generated/product_i2.c: Regenerated.
      	* generated/product_i4.c: Regenerated.
      	* generated/product_i8.c: Regenerated.
      	* generated/product_r10.c: Regenerated.
      	* generated/product_r16.c: Regenerated.
      	* generated/product_r4.c: Regenerated.
      	* generated/product_r8.c: Regenerated.
      	* generated/reshape_c10.c: Regenerated.
      	* generated/reshape_c16.c: Regenerated.
      	* generated/reshape_c4.c: Regenerated.
      	* generated/reshape_c8.c: Regenerated.
      	* generated/reshape_i16.c: Regenerated.
      	* generated/reshape_i4.c: Regenerated.
      	* generated/reshape_i8.c: Regenerated.
      	* generated/reshape_r10.c: Regenerated.
      	* generated/reshape_r16.c: Regenerated.
      	* generated/reshape_r4.c: Regenerated.
      	* generated/reshape_r8.c: Regenerated.
      	* generated/shape_i16.c: Regenerated.
      	* generated/shape_i4.c: Regenerated.
      	* generated/shape_i8.c: Regenerated.
      	* generated/spread_c10.c: Regenerated.
      	* generated/spread_c16.c: Regenerated.
      	* generated/spread_c4.c: Regenerated.
      	* generated/spread_c8.c: Regenerated.
      	* generated/spread_i1.c: Regenerated.
      	* generated/spread_i16.c: Regenerated.
      	* generated/spread_i2.c: Regenerated.
      	* generated/spread_i4.c: Regenerated.
      	* generated/spread_i8.c: Regenerated.
      	* generated/spread_r10.c: Regenerated.
      	* generated/spread_r16.c: Regenerated.
      	* generated/spread_r4.c: Regenerated.
      	* generated/spread_r8.c: Regenerated.
      	* generated/sum_c10.c: Regenerated.
      	* generated/sum_c16.c: Regenerated.
      	* generated/sum_c4.c: Regenerated.
      	* generated/sum_c8.c: Regenerated.
      	* generated/sum_i1.c: Regenerated.
      	* generated/sum_i16.c: Regenerated.
      	* generated/sum_i2.c: Regenerated.
      	* generated/sum_i4.c: Regenerated.
      	* generated/sum_i8.c: Regenerated.
      	* generated/sum_r10.c: Regenerated.
      	* generated/sum_r16.c: Regenerated.
      	* generated/sum_r4.c: Regenerated.
      	* generated/sum_r8.c: Regenerated.
      	* generated/transpose_c10.c: Regenerated.
      	* generated/transpose_c16.c: Regenerated.
      	* generated/transpose_c4.c: Regenerated.
      	* generated/transpose_c8.c: Regenerated.
      	* generated/transpose_i16.c: Regenerated.
      	* generated/transpose_i4.c: Regenerated.
      	* generated/transpose_i8.c: Regenerated.
      	* generated/transpose_r10.c: Regenerated.
      	* generated/transpose_r16.c: Regenerated.
      	* generated/transpose_r4.c: Regenerated.
      	* generated/transpose_r8.c: Regenerated.
      	* generated/unpack_c10.c: Regenerated.
      	* generated/unpack_c16.c: Regenerated.
      	* generated/unpack_c4.c: Regenerated.
      	* generated/unpack_c8.c: Regenerated.
      	* generated/unpack_i1.c: Regenerated.
      	* generated/unpack_i16.c: Regenerated.
      	* generated/unpack_i2.c: Regenerated.
      	* generated/unpack_i4.c: Regenerated.
      	* generated/unpack_i8.c: Regenerated.
      	* generated/unpack_r10.c: Regenerated.
      	* generated/unpack_r16.c: Regenerated.
      	* generated/unpack_r4.c: Regenerated.
      	* generated/unpack_r8.c: Regenerated.
      
      From-SVN: r148769
      Thomas Koenig committed
    • dump-noaddr.x (dump_compare): Use --dumpbase to put dump files in a subdirectory. · ee372c4b
      	* gcc.c-torture/unsorted/dump-noaddr.x (dump_compare): Use --dumpbase
      	to put dump files in a subdirectory.
      	* gcc/testsuite/lib/gcc-dg.exp (cleanup-saved-temps): Also remove
      	".o" temporary files.
      
      From-SVN: r148768
      Uros Bizjak committed
    • re PR fortran/39850 (Too strict checking for procedures as actual argument) · 9b63f282
      2009-06-21  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/39850
      	* interface.c (gfc_compare_interfaces): Take care of implicit typing
      	when checking the function attribute. Plus another bugfix.
      	(compare_parameter): Set attr.function and attr.subroutine according
      	to the usage of a procedure as actual argument.
      
      
      2009-06-21  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/39850
      	* gfortran.dg/interface_19.f90: Add 'cleanup-modules'.
      	* gfortran.dg/interface_20.f90: Ditto.
      	* gfortran.dg/interface_21.f90: Ditto.
      	* gfortran.dg/interface_22.f90: Ditto.
      	* gfortran.dg/interface_30.f90: New.
      	* gfortran.dg/proc_ptr_11.f90: Fix invalid test case.
      
      From-SVN: r148767
      Janus Weil committed
    • fre-vce-1.c: Cleanup "fre" tree dump. · 45a1ba93
      	* gcc.dg/tree-ssa/fre-vce-1.c: Cleanup "fre" tree dump.
      	* gcc.dg/vect/vect-shift-2.c: Cleanup "vect" tree dump.
      	* gcc.dg/vect/vect.exp (VECT_SLP_CFLAGS): Initialize with original
      	DEFAULT_VECTFLAGS.
      
      From-SVN: r148766
      Uros Bizjak committed
    • future: New. · c910ceff
      2009-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>
      
      	* include/std/future: New.
      	* include/Makefile.am: Add.
      	* include/Makefile.in: Regenerate.
      	* src/future.cc: New.
      	* src/Makefile.am: Add.
      	* src/Makefile.in: Regenerate.
      	* config/abi/pre/gnu.ver: Add export.
      	* testsuite/30_threads/headers/future/std_c++0x_neg.cc: New.
      	* testsuite/30_threads/headers/future/types_std_c++0x.cc: New.
      	* testsuite/30_threads/packaged_task/cons/1.cc: New.
      	* testsuite/30_threads/packaged_task/cons/2.cc: New.
      	* testsuite/30_threads/packaged_task/cons/assign_neg.cc: New.
      	* testsuite/30_threads/packaged_task/cons/copy_neg.cc: New.
      	* testsuite/30_threads/packaged_task/cons/move_assign.cc: New.
      	* testsuite/30_threads/packaged_task/cons/move.cc: New.
      	* testsuite/30_threads/packaged_task/members/boolconv.cc: New.
      	* testsuite/30_threads/packaged_task/members/get_future.cc: New.
      	* testsuite/30_threads/packaged_task/members/get_future2.cc: New.
      	* testsuite/30_threads/packaged_task/members/invoke.cc: New.
      	* testsuite/30_threads/packaged_task/members/invoke2.cc: New.
      	* testsuite/30_threads/packaged_task/members/invoke3.cc: New.
      	* testsuite/30_threads/packaged_task/members/invoke4.cc: New.
      	* testsuite/30_threads/packaged_task/members/invoke5.cc: New.
      	* testsuite/30_threads/packaged_task/members/reset.cc: New.
      	* testsuite/30_threads/packaged_task/members/reset2.cc: New.
      	* testsuite/30_threads/packaged_task/members/swap.cc: New.
      	* testsuite/30_threads/packaged_task/requirements/
      	explicit_instantiation.cc: New.
      	* testsuite/30_threads/promise/cons/1.cc: New.
      	* testsuite/30_threads/promise/cons/assign_neg.cc: New.
      	* testsuite/30_threads/promise/cons/copy_neg.cc: New.
      	* testsuite/30_threads/promise/cons/move_assign.cc: New.
      	* testsuite/30_threads/promise/cons/move.cc: New.
      	* testsuite/30_threads/promise/members/get_future.cc: New.
      	* testsuite/30_threads/promise/members/get_future2.cc: New.
      	* testsuite/30_threads/promise/members/set_exception.cc: New.
      	* testsuite/30_threads/promise/members/set_exception2.cc: New.
      	* testsuite/30_threads/promise/members/set_value.cc: New.
      	* testsuite/30_threads/promise/members/set_value2.cc: New.
      	* testsuite/30_threads/promise/members/set_value3.cc: New.
      	* testsuite/30_threads/promise/members/swap.cc: New.
      	* testsuite/30_threads/promise/requirements/
      	explicit_instantiation.cc: New.
      	* testsuite/30_threads/shared_future/cons/assign_neg.cc: New.
      	* testsuite/30_threads/shared_future/cons/copy.cc: New.
      	* testsuite/30_threads/shared_future/cons/default_neg.cc: New.
      	* testsuite/30_threads/shared_future/cons/move.cc: New.
      	* testsuite/30_threads/shared_future/members/get.cc: New.
      	* testsuite/30_threads/shared_future/members/get2.cc: New.
      	* testsuite/30_threads/shared_future/members/has_exception.cc: New.
      	* testsuite/30_threads/shared_future/members/has_value.cc: New.
      	* testsuite/30_threads/shared_future/members/is_ready.cc: New.
      	* testsuite/30_threads/shared_future/members/wait.cc: New.
      	* testsuite/30_threads/shared_future/members/wait_for.cc: New.
      	* testsuite/30_threads/shared_future/members/wait_until.cc: New.
      	* testsuite/30_threads/shared_future/requirements/
      	explicit_instantiation.cc: New.
      	* testsuite/30_threads/unique_future/cons/assign_neg.cc: New.
      	* testsuite/30_threads/unique_future/cons/copy_neg.cc: New.
      	* testsuite/30_threads/unique_future/cons/default_neg.cc: New.
      	* testsuite/30_threads/unique_future/cons/move.cc: New.
      	* testsuite/30_threads/unique_future/members/get.cc: New.
      	* testsuite/30_threads/unique_future/members/get2.cc: New.
      	* testsuite/30_threads/unique_future/members/has_exception.cc: New.
      	* testsuite/30_threads/unique_future/members/has_value.cc: New.
      	* testsuite/30_threads/unique_future/members/is_ready.cc: New.
      	* testsuite/30_threads/unique_future/members/wait.cc: New.
      	* testsuite/30_threads/unique_future/members/wait_for.cc: New.
      	* testsuite/30_threads/unique_future/members/wait_until.cc: New.
      	* testsuite/30_threads/unique_future/requirements/
      	explicit_instantiation.cc: New.
      	* testsuite/performance/30_threads/future/polling.cc: New.
      
      From-SVN: r148765
      Jonathan Wakely committed
    • [multiple changes] · f3b57ab0
      2009-06-21  Thomas Quinot  <quinot@adacore.com>
      
      	* exp_ch3.adb, exp_prag.adb, exp_util.adb, exp_util.ads, freeze.adb,
      	sem_ch13.adb, sem_elab.adb (Exp_Prag.Expand_Pragma_Import_Or_Interface):
      	Factor out code to new subprogram...
      	(Exp_Util.Find_Init_Call): New shared routine to find the init proc call
      	for a default initialized variable.
      	(Freeze.Check_Address_Clause): Do not reset Has_Delayed_Freeze on an
      	entity that has an associated freeze node.
      	(Sem_Ch13.Analyze_Attribute_Definition_Clause, case Address):
      	If there is an init call for the object, defer it to the object freeze
      	point.
      	(Check_Elab_Call.Find_Init_Call): Rename to Check_Init_Call, to avoid
      	name clash with new subprogram introduced in Exp_Util.
      
      2009-06-21  Robert Dewar  <dewar@adacore.com>
      
      	* einfo.ads: Minor reformatting
      
      From-SVN: r148764
      Arnaud Charlet committed
    • [multiple changes] · 4f91a255
      2009-06-21  Ed Falis  <falis@adacore.com>
      
      	* env.c (__gnat_environ): return NULL for vThreads - unimplemented
      
      2009-06-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* einfo.ads: Update comments.
      
      2009-06-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_disp.adb (Check_Direct_Call): New routine. Dispatching calls
      	where the controlling formal is of private class-wide type whose
      	completion is a synchronized type can be converted into direct calls.
      
      2009-06-21  Vincent Celier  <celier@adacore.com>
      
      	* gnatcmd.adb (Check_Files): When all sources of the project are to be
      	indicated to gnatcheck, gnatpp or gnatmetric, always specify the list
      	of sources using -files=, so that the distinction can be made by the
      	tool of a call with no source (to display the usage) from a call with
      	a project file that contains no source.
      
      2009-06-21  Jerome Lambourg  <lambourg@adacore.com>
      
      	* exp_ch3.adb (Build_Array_Init_Proc): Do not build the init proc in
      	case of VM convention arrays.
      
      From-SVN: r148763
      Arnaud Charlet committed
    • Fix 40359 · c64c5552
      Co-Authored-By: Revital Eres <eres@il.ibm.com>
      
      From-SVN: r148762
      Ira Rosen committed
    • re PR middle-end/38729 (long time needed in tree canonical iv) · 2cee1509
      2009-06-21  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/38729
      	* tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
      	to loops with a single exit if -fno-expensive-optimizations.
      
      From-SVN: r148761
      Richard Guenther committed
    • var-tracking.c (struct shared_hash_def, [...]): New types. · d24686d7
      	* var-tracking.c (struct shared_hash_def, shared_hash): New types.
      	(dataflow_set): Change vars type from htab_t to shared_hash.
      	(shared_hash_pool, empty_shared_hash): New variables.
      	(vars_clear): Removed.
      	(shared_hash_shared, shared_hash_htab, shared_hash_copy,
      	shared_hash_find_slot_unshare, shared_hash_find_slot,
      	shared_hash_find_slot_noinsert, shared_hash_find): New
      	static inlines.
      	(shared_hash_unshare, shared_hash_destroy): New functions.
      	(unshare_variable): Unshare set->vars if shared, use
      	shared_hash_htab.
      	(vars_copy): Use htab_traverse_noresize instead of htab_traverse.
      	(get_init_value, find_src_set_src, dump_dataflow_set,
      	clobber_variable_part, emit_notes_for_differences): Use
      	shared_hash_htab.
      	(dataflow_set_init): Remove second argument, set vars to
      	empty_shared_hash instead of creating a new htab.
      	(dataflow_set_clear): Call shared_hash_destroy and set vars
      	to empty_shared_hash instead of calling vars_clear.
      	(dataflow_set_copy): Don't call vars_copy, instead just share
      	the src htab with dst.
      	(variable_union): Use shared_hash_*, use initially NO_INSERT
      	lookup if set->vars is shared.  Don't keep slot cleared before
      	calling unshare_variable.  Unshare set->vars if needed.
      	Even ->refcount == 1 vars must be unshared if set->vars is shared
      	and var needs to be modified.
      	(variable_canonicalize): New function.
      	(dataflow_set_union): If dst->vars is empty, just share src->vars
      	with dst->vars and traverse with variable_canonicalize to canonicalize
      	and unshare what is needed.
      	(dataflow_set_different): If old_set and new_set use the same shared
      	htab, they aren't different.  If number of htab elements is different,
      	htabs are different.  Use shared_hash_*.
      	(dataflow_set_destroy): Call shared_hash_destroy instead of
      	htab_delete.
      	(compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
      	second argument to dataflow_set_init.
      	(vt_initialize): Likewise.  Initialize shared_hash_pool and
      	empty_shared_hash, move bb in/out initialization afterwards.
      	Use variable_htab_free instead of NULL as changed_variables del hook.
      	(variable_was_changed): Change type of second argument to pointer to
      	dataflow_set.  When inserting var into changed_variables, bump
      	refcount.  Unshare set->vars if set is shared htab and slot needs to
      	be cleared.
      	(set_variable_part): Use shared_hash_*, use initially NO_INSERT
      	lookup if set->vars is shared.  Unshare set->vars if needed.
      	Even ->refcount == 1 vars must be unshared if set->vars is shared
      	and var needs to be modified.  Adjust variable_was_changed caller.
      	(delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
      	vars must be unshared if set->vars is shared and var needs to be
      	modified.  Adjust variable_was_changed caller.
      	(emit_note_insn_var_location): Don't pool_free var.
      	(emit_notes_for_differences_1): Initialize empty_var->refcount to 0
      	instead of 1.
      	(vt_finalize): Call htab_delete on empty_shared_hash->htab and
      	free_alloc_pool on shared_hash_pool.
      
      From-SVN: r148760
      Jakub Jelinek committed
    • hashtab.c (htab_traverse): Don't call htab_expand for nearly empty hashtabs with sizes 7, 13 or 31. · a46f975b
      	* hashtab.c (htab_traverse): Don't call htab_expand for
      	nearly empty hashtabs with sizes 7, 13 or 31.
      
      From-SVN: r148759
      Jakub Jelinek committed
    • re PR testsuite/40475 (gcc.dg/vect/vect-nest-cycle-[12].c) · 3d25028c
      
      	PR testsuite/40475
      	* gcc.dg/vect/vect-nest-cycle-1.c: Fail to vectorize on targets 
      	without misalignment support.
      	* gcc.dg/vect/vect-nest-cycle-2.c: Likewise.
      
      From-SVN: r148758
      Ira Rosen committed
    • 2009-06-20 Paolo Carlini <paolo.carlini@oracle.com> · 1a9e603e
      	* Revert last Change.
      
      From-SVN: r148756
      Paolo Carlini committed
    • Daily bump. · 299dd728
      From-SVN: r148755
      GCC Administrator committed
  2. 20 Jun, 2009 11 commits
  3. 19 Jun, 2009 15 commits
    • re PR fortran/40440 (Automatic deallocation component of DT function return value) · 47f71eb9
      2009-06-19  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/40440
      	* trans-expr.c (gfc_conv_procedure_call): Do not deallocate
      	allocatable components if the argument is a pointer.
      
      2009-06-19  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/40440
      	* gfortran.dg/alloc_comp_result_2.f90: New test.
      
      From-SVN: r148731
      Paul Thomas committed
    • tree.c (substitute_in_expr): Tweak and reformat. · 6569d386
      	* tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
      	<tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
      	Propagate the TREE_READONLY flag without overwriting it.
      	(substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
      	Propagate the TREE_READONLY flag onto the result.
      	(process_call_operands): Move around.  Use correct constant value.
      
      From-SVN: r148729
      Eric Botcazou committed
    • Fix PR 40482 2009-06-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> · ce41c38b
      Fix PR 40482
      2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
      	    PR target/40482
      	    * config/arm/arm.c (thumb_shiftable_const): Truncate val to 
      	    32 bits.
      	    * config/arm/arm.md: Likewise.
      
      2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      
      	    PR target/40482
      	    * gcc.target/arm/pr40482.c: New test.
      
      From-SVN: r148728
      Ramana Radhakrishnan committed
    • tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK to GIMPLE_ERROR_MARK. · d130ae11
      ./:	* tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
      	to GIMPLE_ERROR_MARK.
      
      	* c-typeck.c (build_conditional_expr): Add op1_original_type and
      	op2_original_type parameters.  Warn about using different enum
      	types.
      	* c-parser.c (c_parser_conditional_expression): Pass original
      	types to build_conditional_expr.
      	* c-tree.h (build_conditional_expr): Update declaration.
      testsuite/:
      	* gcc.dg/Wcxx-compat-18.c: New testcase.
      
      From-SVN: r148727
      Ian Lance Taylor committed
    • trans.c (emit_check): Do not wrap up the result in a SAVE_EXPR. · 502c4bb9
      	* gcc-interface/trans.c (emit_check): Do not wrap up the result
      	in a SAVE_EXPR.
      	(protect_multiple_eval): Always protect complex expressions.
      
      From-SVN: r148723
      Eric Botcazou committed
    • i386.c (ix86_function_specific_save): Test that fields match values... · d4aa4f4b
      	* config/i386/i386.c (ix86_function_specific_save): Test that
      	fields match values, rather than testing the values are in a
      	certain range.
      
      From-SVN: r148721
      Ian Lance Taylor committed
    • random.h (_Adaptor): Simplify for _DInputType always a floating point type. · 9b88236b
      2009-06-19  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* include/bits/random.h (_Adaptor): Simplify for _DInputType always
      	a floating point type.
      	(uniform_int_distribution<>::uniform_int_distribution(_IntType,
      	_IntType)): Fix second default argument.
      	(uniform_int_distribution<>::_M_call): Remove.
      	(uniform_int_distribution<>::operator()(_UniformRandomNumberGenerator&,
      	const param_type&)): Only declare.
      	* include/bits/random.tcc (uniform_int_distribution<>::_M_call(
      	_UniformRandomNumberGenerator&, result_type, result_type, true_type):
      	Remove.
      	uniform_int_distribution<>::operator()(_UniformRandomNumberGenerator&,
      	const param_type&): Define here.
      	(geometric_distribution<>::operator()(_UniformRandomNumberGenerator&,
      	const param_type&), discrete_distribution<>::operator()
      	(_UniformRandomNumberGenerator&, const param_type&), 
      	piecewise_constant_distribution<>::operator()
      	(_UniformRandomNumberGenerator&, const param_type&),
      	piecewise_linear_distribution<>::operator()
      	(_UniformRandomNumberGenerator&, const param_type&)): Use double as
      	the second template argument of _Adaptor.
      	* testsuite/26_numerics/random/uniform_int_distribution/cons/
      	default.cc: Adjust.
      
      From-SVN: r148720
      Paolo Carlini committed
    • random.tcc (discrete_distribution<>::param_type:: param_type(size_t, double,… · f8dd9e0d
      random.tcc (discrete_distribution<>::param_type:: param_type(size_t, double, double, _Func), [...]): Tidy.
      
      2009-06-19  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* include/bits/random.tcc (discrete_distribution<>::param_type::
            	param_type(size_t, double, double, _Func),
      	discrete_distribution<>::operator()(_UniformRandomNumberGenerator&,
      	const param_type&)): Tidy.
      	(piecewise_constant_distribution<>::param_type::_M_initialize):
      	Use reserve, fix.
      	(piecewise_constant_distribution<>::param_type::
      	param_type(initializer_list<>, _Func),
      	piecewise_constant_distribution<>::param_type::
      	param_type(size_t, _RealType, _RealType, _Func),
             	piecewise_linear_distribution<>::param_type::
      	param_type(initializer_list<>, _Func),
             	piecewise_linear_distribution<>::param_type::
      	param_type(size_t, _RealType, _RealType, _Func)): Use reserve, tidy.
      	(piecewise_constant_distribution<>::param_type::
      	param_type(_InputIteratorB, _InputIteratorB, _InputIteratorW),
      	piecewise_constant_distribution<>::
      	operator()(_UniformRandomNumberGenerator&, const param_type&),
            	piecewise_linear_distribution<>::
      	operator()(_UniformRandomNumberGenerator&, const param_type&)): Fix.
      	(operator>>(std::basic_istream<>&,
      	piecewise_constant_distribution<>&),
      	operator>>(std::basic_istream<>&, piecewise_linear_distribution<>&)):
      	Use reserve.
      	* include/bits/random.h: Minor cosmetic changes.
      
      From-SVN: r148719
      Paolo Carlini committed
    • tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle ADDR_EXPR pointers. · 779704e7
      2009-06-19  Richard Guenther  <rguenther@suse.de>
      
      	* tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
      	ADDR_EXPR pointers.
      	(ptr_derefs_may_alias_p): Likewise.
      	(ptr_deref_may_alias_ref_p_1): New function.
      	(ptr_deref_may_alias_ref_p): Likewise.
      	(ref_maybe_used_by_call_p_1): Handle builtins that are not
      	covered by looking at the ESCAPED solution.
      	(call_may_clobber_ref_p_1): Likewise.
      	* tree-ssa-structalias.c (get_constraint_for_ptr_offset):
      	Handle NULL_TREE offset.  Do not produce redundant constraints.
      	(process_all_all_constraints): New helper function.
      	(do_structure_copy): Use it.
      	(handle_lhs_call): Likewise.
      	(find_func_aliases): Handle some builtins with pointer arguments
      	and/or return values explicitly.
      
      	* gcc.c-torture/execute/20090618-1.c: New testcase.
      
      From-SVN: r148718
      Richard Guenther committed
    • * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int. · 50ae5fea
      From-SVN: r148712
      Ian Lance Taylor committed
    • gfortran.h (gfc_expr): Use mpc_t to represent complex numbers. · eb6f9a86
      	* gfortran.h (gfc_expr): Use mpc_t to represent complex numbers.
      
      	* arith.c, dump-parse-tree.c, expr.c, module.c, resolve.c,
      	simplify.c, target-memory.c, target-memory.h, trans-const.c,
      	trans-expr.c: Convert to mpc_t throughout.
      
      From-SVN: r148711
      Kaveh R. Ghazi committed
    • ggc-page.c (ggc_pch_write_object): Initialize emptyBytes. · 642324bb
      ./:	* ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
      	* sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
      	version.
      
      	* c-decl.c (finish_decl): If -Wc++-compat, warn about
      	uninitialized const.
      testsuite/:
      	* gcc.dg/Wcxx-compat-17.c: New testcase.
      
      From-SVN: r148710
      Ian Lance Taylor committed
    • dse.c (struct store_info): Rename bitmap field to bmap. · dc491a25
      ./:	* dse.c (struct store_info): Rename bitmap field to bmap.  Change
      	all uses.
      
      	* c-decl.c (in_struct, struct_types): Remove.
      	(struct c_binding): Add in_struct field.
      	(c_binding_ptr): Define type, along with VEC.
      	(struct c_struct_parse_info): Define.
      	(struct_parse_info): New static variable.
      	(bind): Initialize in_struct field.
      	(start_struct): Remove enclosing_in_struct and
      	enclosing_struct_types parameters.  Add
      	enclosing_struct_parse_info parameter.  Change all callers.  Set
      	struct_parse_info rather than in_struct and struct_types.
      	(grokfield): If -Wc++-compat and there is a symbol binding for the
      	field name, set the in_struct flag and push it on the
      	struct_parse_info->fields vector.
      	(warn_cxx_compat_finish_struct): New static function.
      	(finish_struct): Remove enclosing_in_struct and
      	enclosing_struct_types parameters.  Add
      	enclosing_struct_parse_info parameter.  Change all callers.  Don't
      	set C_TYPE_DEFINED_IN_STRUCT here.  Call
      	warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
      	parameter.  Only push on struct_types if warn_cxx_compat.
      	(finish_enum): Only push on struct_types if warn_cxx_compat.
      	(declspecs_add_type): Add loc parameter.  Change all callers.
      	Change all error calls to error_at.  Pass loc, not input_location,
      	to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
      	defined in a struct.  If -Wc++-compat and parsing a struct, record
      	that a typedef name was used.
      	* c-parser.c (c_parser_declspecs): Get location to pass to
      	declspecs_add_type.
      	(c_parser_struct_or_union_specifier): Update calls to start_struct
      	and finish_struct.
      	* c-tree.h (struct c_struct_parse_info): Declare.
      	(finish_struct, start_struct): Update declarations.
      	(declspecs_add_type): Update declaration.
      objc/:
      	* objc-act.c (objc_in_struct, objc_struct_types): Remove.
      	(objc_struct_info): New static variable.
      	(objc_start_struct): Pass &objc_struct_info, not &objc_in_struct
      	and &objc_struct_types, to start_struct.
      	(objc_finish_struct): Likewise for finish_struct.
      objcp/:
      	* objcp-decl.h (start_struct): Remove in_struct and struct_types
      	parameters.  Add struct_info parameter.
      	(finish_struct): Likewise.
      testsuite/:
      	* gcc.dg/Wcxx-compat-15.c: New testcase.
      
      From-SVN: r148709
      Ian Lance Taylor committed
    • c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global variable with an anonymous type. · 88eeff6f
      ./:	* c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
      	variable with an anonymous type.
      fortran/:
      	* cpp.c (struct gfc_cpp_option_data): Give this struct, used for
      	the global variable gfc_cpp_option, a name.
      testsuite/:
      	* gcc.dg/Wcxx-compat-16.c: New testcase.
      
      From-SVN: r148708
      Ian Lance Taylor committed