Commit Graph

78 Commits

Author SHA1 Message Date
Tobias Burnus
b6f63e8984 re PR fortran/34192 (NEAREST can return wrong numbers)
2007-11-23  Tobias Burnus  <burnus@net-b.de>
            Steven G. Kargl  <kargl@gcc.gnu.org>

        PR fortran/34192
        * simplify.c (gfc_simplify_nearest): Fix NEAREST for
        subnormal numbers.

2007-11-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34192
        * gfortran.dg/nearest_2.f90: New.


Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>

From-SVN: r130383
2007-11-23 22:03:48 +01:00
Jerry DeLisle
39a184ce43 re PR fortran/33544 ([4.3 only] Warning in TRANSFER intrinsic should be made optional)
2007-10-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33544
	* simplify.c (gfc_simplify_transfer): Only warn for short transfer when
	-Wsurprising is given.
	* invoke.texi: Document revised behavior.

From-SVN: r129488
2007-10-19 14:06:05 +00:00
Paul Thomas
2dc955484e re PR fortran/33733 (ICEs in simplify_transfer)
2007-10-18  Paul Thomas  <pault@gcc.gnu.org>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR fortran/33733
	* simplify.c (gfc_simplify_transfer): Return null if the source
	expression is EXPR_FUNCTION.

2007-10-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/33733
	* gfortran.dg/transfer_simplify_6.f90: New test.

From-SVN: r129435
2007-10-18 12:44:03 +00:00
Jerry DeLisle
e0f6835db6 re PR fortran/33609 (ICE on arithmetic overflow)
2007-10-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33609
	* simplify.c (range_check): Return gfc_bad_expr if incoming expression 
	is NULL.

From-SVN: r129059
2007-10-06 23:44:48 +00:00
Tobias Schlüter
a0689cdfd5 * simplify.c (gfc_simplify_size): Fix typo.
From-SVN: r129053
2007-10-06 14:17:32 +02:00
Tobias Burnus
92ebaacd31 re PR fortran/33037 (TRANSFER should warn on mismatched sizes)
2007-09-21  Tobias Burnus  <burnus@net-b.de>

        PR fortran/33037
        * simplify.c (gfc_simplify_transfer): Warn if source size
        is smaller than result size.

2007-09-21  Tobias Burnus  <burnus@net-b.de>

        PR fortran/33037
        * gfortran.dg/transfer_check_1.f90: New.

From-SVN: r128646
2007-09-21 12:21:29 +02:00
Tobias Burnus
5b550abd15 simplify.c (gfc_simplify_lgamma): Fix mpfr_lgamma call.
2007-08-27  Tobias Burnus  <burnus@net-b.de>

	* simplify.c (gfc_simplify_lgamma): Fix mpfr_lgamma call.

From-SVN: r127829
2007-08-27 12:03:22 +02:00
Tobias Burnus
75be5dc0a1 re PR fortran/32980 (Vendor extension: Intrinsic functions (D)GAMMA, LGAMMA (ALGAMA/DLGAMA))
2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32980
	* intrinsic.h (gfc_simplify_gamma,gfc_simplify_lgamma,
	gfc_resolve_gamma,gfc_resolve_lgamma): New function declations.
	* mathbuiltins.def: Define GAMMA and LGAMMA.
	* intrinsic.c (add_functions): Add GAMMA, DGAMMA, LGAMMA, ALGAMA
	and DLGAMA.
	* simplify.c (gfc_simplify_gamma,gfc_simplify_lgamma): New functions.
	* iresolve.c (gfc_resolve_gamma,gfc_resolve_lgamma): New functions.
	* intrinsic.texi: Add documentation for GAMMA and LGAMMA.

2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32980
	* gfortran.dg/gamma_1.f90: New.
	* gfortran.dg/gamma_2.f90: New.
	* gfortran.dg/gamma_3.f90: New.

From-SVN: r127809
2007-08-26 20:11:42 +02:00
Francois-Xavier Coudert
719e72fb6f re PR fortran/29600 ([F03] MINLOC and MAXLOC take an optional KIND argument)
PR fortran/29600

	* intrinsic.c (add_functions): Add optional KIND argument to ACHAR.
	* iresolve.c (gfc_resolve_achar): Handle the KIND argument.
	* check.c (gfc_check_achar): Check for the optional KIND argument.
	* simplify.c (gfc_simplify_achar): Use KIND argument.
	* intrinsic.h (gfc_check_achar, gfc_simplify_achar,
	gfc_resolve_achar): Adjust prototypes.

	* gfortran.dg/intrinsics_kind_argument_1.f90: Add test for ACHAR
	intrinsic.

From-SVN: r127385
2007-08-12 21:21:08 +00:00
Francois-Xavier Coudert
5cda509805 re PR fortran/29600 ([F03] MINLOC and MAXLOC take an optional KIND argument)
PR fortran/29600

	* intrinsic.c (add_functions): Add KIND arguments to COUNT,
	IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND
	and VERIFY.
	* iresolve.c (gfc_resolve_count): Add kind argument.
	(gfc_resolve_iachar): New function.
	(gfc_resolve_ichar): Add kind argument.
	(gfc_resolve_index_func): Likewise.
	(gfc_resolve_lbound): Likewise.
	(gfc_resolve_len): Likewise.
	(gfc_resolve_len_trim): Likewise.
	(gfc_resolve_scan): Likewise.
	(gfc_resolve_size): New function.
	(gfc_resolve_ubound): Add kind argument.
	(gfc_resolve_verify): Likewise.
	* trans-decl.c (gfc_get_extern_function_decl): Allow specific
	intrinsics to have 4 arguments.
	* check.c (gfc_check_count): Add kind argument.
	(gfc_check_ichar_iachar): Likewise.
	(gfc_check_index): Likewise.
	(gfc_check_lbound): Likewise.
	(gfc_check_len_lentrim): New function.
	(gfc_check_scan): Add kind argument.
	(gfc_check_size): Likewise.
	(gfc_check_ubound): Likewise.
	(gfc_check_verify): Likewise.
	* intrinsic.texi: Update documentation for COUNT, IACHAR, ICHAR,
	INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND and VERIFY.
	* simplify.c (get_kind): Whitespace fix.
	(int_expr_with_kind): New function.
	(gfc_simplify_iachar): Add kind argument.
	(gfc_simplify_iachar): Likewise.
	(gfc_simplify_ichar): Likewise.
	(gfc_simplify_index): Likewise.
	(simplify_bound_dim): Likewise.
	(simplify_bound): Likewise.
	(gfc_simplify_lbound): Likewise.
	(gfc_simplify_len): Likewise.
	(gfc_simplify_len_trim): Likewise.
	(gfc_simplify_scan): Likewise.
	(gfc_simplify_shape): Pass NULL as kind argument to gfc_simplify_size.
	(gfc_simplify_size): Add kind argument.
	(gfc_simplify_ubound): Likewise.
	(gfc_simplify_verify): Likewise.
	* intrinsic.h: Update prototypes and add new ones.
	* trans-intrinsic.c (gfc_conv_intrinsic_index): Rename into
	gfc_conv_intrinsic_index_scan_verify.
	(gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify): Remove.
	(gfc_conv_intrinsic_function): Call
	gfc_conv_intrinsic_index_scan_verify to translate the INDEX,
	SCAN and VERIFY intrinsics.

	* gfortran.dg/intrinsics_kind_argument_1.f90: New test.
	* gfortran.dg/pure_dummy_length_1.f90: Adapt to new error wording.

From-SVN: r127380
2007-08-12 19:57:01 +00:00
Francois-Xavier Coudert
2263c77558 re PR fortran/29828 ([F2003] MIN and MAX with character variables)
PR fortran/29828

	* trans.h (gfor_fndecl_string_minmax): New prototype.
	* trans-decl.c (gfor_fndecl_string_minmax): New variable.
	(gfc_build_intrinsic_function_decls): Create gfor_fndecl_string_minmax.
	* check.c (gfc_check_min_max): Allow for character arguments.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): New function.
	(gfc_conv_intrinsic_function): Add special case for MIN and MAX
	intrinsics with character arguments.
	* simplify.c (simplify_min_max): Add simplification for character
	arguments.

	* intrinsics/string_intrinsics.c (string_minmax): New function
	and prototype.
	* gfortran.map (GFORTRAN_1.0): Add _gfortran_string_minmax

	* gfortran.dg/minmax_char_1.f90: New test.
	* gfortran.dg/minmax_char_2.f90: New test.
	* gfortran.dg/min_max_optional_4.f90: New test.

From-SVN: r127252
2007-08-06 20:47:17 +00:00
Nick Clifton
d234d78859 arith.c: Change copyright header to refer to version 3 of the GNU General Public...
* arith.c: Change copyright header to refer to version 3 of the GNU General 
  Public License and to point readers at the COPYING3 file and the FSF's 
  license web page.
* openmp.c, interface.c, intrinsic.c, trans-array.c, trans-expr.c, symbol.c, 
  iso-fortran-env.def, intrinsic.h, decl.c, trans-array.h, matchexp.c, 
  dump-parse-tree.c, trans-common.c, array.c, Make-lang.in, trans-openmp.c, 
  gfortran.h, error.c, iso-c-binding.def, lang.opt, data.c, trans-const.c, 
  trans-stmt.c, expr.c, trans-const.h, trans-stmt.h, module.c, trans.c, 
  scanner.c, trans-types.c, trans.h, gfortranspec.c, trans-types.h, 
  lang-specs.h, io.c, bbt.c, resolve.c, f95-lang.c, st.c, iresolve.c, match.c,
  trans-decl.c, trans-io.c, target-memory.c, match.h, target-memory.h, parse.c,
  arith.h, check.c, dependency.c, parse.h, types.def, convert.c, dependency.h,
  primary.c, trans-intrinsic.c, options.c, misc.c, simplify.c: Likewise.

From-SVN: r127129
2007-08-01 16:29:36 +00:00
Paul Thomas
e7c8ff569c re PR fortran/32157 (intrinsic function name conflicts with subroutine if present in the same file)
2007-07-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32157
	* resolve.c (is_external_proc): New function.  Adds test that
	the symbol is not an intrinsic procedure.
	* (resolve_function, resolve_call): Replace logical statements
	with call to is_external_proc.

	PR fortran/32689
	* simplify.c (gfc_simplify_transfer): If mold has rank, the
	result is an array.

	PR fortran/32634
	* module.c (write_generic): Write the local name of the
	interface. 


2007-07-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32157
	* gfortran.dg/overload_2.f90: New test.

	PR fortran/32689
	* gfortran.dg/transfer_simplify_5.f90

	PR fortran/32634
	* gfortran.dg/interface_15.f90: New test.

From-SVN: r126509
2007-07-10 05:11:00 +00:00
Paul Thomas
64f4bedf7e re PR fortran/32472 (ICE in trans-const.c:106 for REPEAT initialization expression of non-parameter)
2007-06-30  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32472
	* simplify.c (gfc_simplify_repeat): Add handling of character
	literal for first argument.

2007-06-30  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30284
	* gfortran.dg/repeat_f90: New test.

From-SVN: r126147
2007-06-30 13:08:19 +00:00
Paul Thomas
7433458d87 [multiple changes]
2007-05-16  Brooks Moses  <brooks.moses@codesourcery.com>

	PR fortran/18769
	PR fortran/30881
	PR fortran/31194
	PR fortran/31216
	PR fortran/31427
	* target-memory.c: New file.
	* target-memory.h: New file.
	* simplify.c: Add #include "target-memory.h".
	(gfc_simplify_transfer): Implement constant-
	folding for TRANSFER intrinsic.
	* Make-lang.in: Add dependencies on new target-memory.* files.

2007-05-16  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/18769
	PR fortran/30881
	PR fortran/31194
	PR fortran/31216
	PR fortran/31427
	* transfer_simplify_1.f90: New test.
	* transfer_simplify_2.f90: New test.

From-SVN: r124759
2007-05-16 05:40:51 +00:00
Francois-Xavier Coudert
22aef73f17 re PR fortran/31764 (NEW_LINE with array argument)
PR fortran/31764

	* simplify.c (gfc_simplify_new_line): NEW_LINE can be simplified
	even for non constant arguments.

	* gfortran.dg/new_line.f90: Add new checks.

From-SVN: r124482
2007-05-06 22:56:52 +00:00
Jerry DeLisle
26fbc975c8 re PR fortran/31251 (Non-integer character length leads to segfault)
PR fortran/31251
	* simplify.c (gfc_simplify_len): Only simplify integer lengths.

From-SVN: r124415
2007-05-04 11:10:06 +00:00
Francois-Xavier Coudert
f0fc6ae664 re PR fortran/31781 (fortran regressions on trunk if you --disable-checking)
PR fortran/31781
	* simplify.c (gfc_simplify_repeat): Don't put function call with
	side effect in a gcc_assert().

From-SVN: r124412
2007-05-04 09:26:41 +00:00
Francois-Xavier Coudert
fc9f54d5b5 re PR fortran/31591 (UBOUND as initialization expression (lacking simplification))
PR fortran/31591

	* simplify.c (simplify_bound_dim): New function.
	(simplify_bound): Use the above. Perform simplification of LBOUND
	and UBOUND when DIM argument is not present.

	* gfortran.dg/bound_simplification_1.f90: New test.

From-SVN: r124281
2007-04-29 16:03:58 +00:00
Kazu Hirata
71172460b6 gfc-internals.texi: Fix typos.
* gfc-internals.texi: Fix typos.
	* simplify.c: Fix a comment typo.

From-SVN: r123845
2007-04-15 14:28:43 +00:00
Francois-Xavier Coudert
f1412ca58a re PR fortran/31304 (REPEAT argument NCOPIES is not converted as it should)
PR fortran/31304

	* fortran/gfortran.h (gfc_charlen_int_kind): New prototype.
	* fortran/trans-types.c (gfc_charlen_int_kind): New variable.
	(gfc_init_types): Define gfc_charlen_int_kind. 
	* fortran/trans.h (gfor_fndecl_string_repeat): Remove prototype.
	* fortran/trans-decl.c (gfor_fndecl_string_repeat): Delete.
	(gfc_build_intrinsic_function_decls): Don't set
	gfor_fndecl_string_repeat.
	* fortran/trans-intrinsic.c (gfc_conv_intrinsic_repeat): Rewrite
	so that we don't have to call a library function.
	* fortran/simplify.c (gfc_simplify_repeat): Perform the necessary
	checks on the NCOPIES argument, and work with arbitrary size
	arguments.

	* intrinsics/string_intrinsics.c (string_repeat): Remove.

	* gfortran.dg/repeat_2.f90: New test.
	* gfortran.dg/repeat_3.f90: New test.
	* gfortran.dg/repeat_4.f90: New test.

From-SVN: r123481
2007-04-03 21:05:14 +00:00
Kazu Hirata
65de695fa5 * simplify.c, trans-array.c: Fix comment typos.
From-SVN: r121373
2007-01-31 03:35:59 +00:00
Thomas Koenig
34462c28df re PR fortran/30389 ([4.1 only] ACHAR() intrinsic gives erroneous errors in constant-folding.)
2007-01-28  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30389
	* gfortran.h:  Remove gfc_simplify_init_1.
	* arith.h:  Remove third argument from gfc_compare_string.
	* arith.c(gfc_compare_expression):  Remove third argument
	from call to gfc_compare_string.
	(gfc_compare_string):  Remove third argument xcoll_table.
	Remove use of xcoll_table.
	* misc.c(gfc_init_1):  Remove call to gfc_simplify_init_1.
	* simplify.c(ascii_table):  Remove.
	(xascii_table): Likewise.
	(gfc_simplify_achar):  ICE if extract_int fails.  Remove use of
	ascii_table.  Warn if -Wsurprising and value < 0 or > 127.
	(gfc_simplify_char):  ICE if extract_int fails. Error if
	value < 0 or value > 255.
	(gfc_simplify_iachar):  Remove use of xascii_table.
	Char values outside of 0..255 are an ICE.
	(gfc_simplify_lge):  Remove use of xascii_table.
	(gfc_simplify_lgt):  Likewise.
	(gfc_simplify_lle):  Likewise.
	(gfc_simplify_llt):  Likewise.
	(invert_table):  Remove.
	(gfc_simplify_init_1):  Remove.

2007-01-28  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30389
	* gfortran.dg/achar_2.f90:  New test.
	* gfortran.dg/achar_3.f90:  New test.

From-SVN: r121255
2007-01-28 10:44:47 +00:00
Steven G. Kargl
edf1eac29e openmp.c, [...]: Next installment in the massive whitespace patch.
* openmp.c, matchexp.c, module.c, scanner.c, resolve.c, st.c,
    parse.c, primary.c, options.c, misc.c, simplify.c:  Next installment
    in the massive whitespace patch.

From-SVN: r121012
2007-01-20 22:01:41 +00:00
Brooks Moses
4d499824ed simplify.c: Update copyright to 2007.
* simplify.c: Update copyright to 2007.
* scanner.c: Same.

From-SVN: r120668
2007-01-11 01:07:36 -08:00
Brooks Moses
3775c3dc9a simplify.c (gfc_simplify_ibclr): Fix POS comparison.
* simplify.c (gfc_simplify_ibclr): Fix POS comparison.
(gfc_simplify_ibset): Same.

From-SVN: r120636
2007-01-09 23:42:56 -08:00
Brooks Moses
f1dcb9bf3b re PR fortran/30381 ([4.1 only] ISHFTC() constant folding is broken.)
PR 30381
PR 30420
* fortran/simplify.c (convert_mpz_to_unsigned): New function.
	(convert_mpz_to_signed): New function, largely based on
	twos_complement().
	(twos_complement): Removed.
	(gfc_simplify_ibclr): Add conversions to and from an
	unsigned representation before bit-twiddling.
	(gfc_simplify_ibset): Same.
	(gfc_simplify_ishftc): Add checks for overly large
	constant arguments, only check the third argument if
	it's present, carry over high bits into	the result as
	appropriate, and perform the final conversion back to
	a signed representation using the correct sign bit.
	(gfc_simplify_not): Removed unnecessary masking.
* testsuite/gfortran.dg/
	* chkbits.f90: Added IBCLR tests; test calls for
	different integer kinds.
	* ishft.f90: Renamed to ishft_1.f90...
	* ishft_1.f90: ...Renamed from ishft.f90.
	* ishft_2.f90: New test.
	* ishft_3.f90: New test.

From-SVN: r120634
2007-01-09 21:46:13 -08:00
Francois-Xavier Coudert
9f1dce5609 re PR fortran/29391 ([4.2/4.1 only] LBOUND and UBOUND are broken)
PR fortran/29391
	PR fortran/29489

	* simplify.c (simplify_bound): Fix the simplification of
	LBOUND/UBOUND intrinsics.
	* trans-intrinsic.c (simplify_bound): Fix the logic, and
	remove an erroneous assert.

	* gcc/testsuite/gfortran.dg/bound_2.f90: Add more checks.
	* gcc/testsuite/gfortran.dg/bound_3.f90: New test.

From-SVN: r118888
2006-11-16 12:25:11 +00:00
Steven G. Kargl
b814a64ea1 gfortran.h: Remove GFC_MPFR_TOO_OLD.
2006-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>
	* gfortran.h: Remove GFC_MPFR_TOO_OLD.
	* arith.c (arctangent2): Remove function
	(gfc_check_real_range): Remove subnormal kludge.
	* arith.h: Remove arctangent2 prototype.
	* simplify.c: (gfc_simplify_atan2): Remove use of arctangent2.
	(gfc_simplify_exponent, gfc_simplify_log, gfc_simplify_nearest,
	gfc_simplify_rrspacing, gfc_simplify_spacing): Remove mpfr kludges.

From-SVN: r118120
2006-10-28 23:31:22 +00:00
Steven G. Kargl
cc6d3bde5a re PR fortran/15441 (RRSPACING broken for denormals)
2006-10-06  Steven G. Kargl  <kargl@gcc.gnu.org>
 
	* gfortran.h: Define GFC_MPFR_TOO_OLD via mpfr version info.
	* arith.c (arctangent, gfc_check_real_range): Use it.	
	* simplify.c (gfc_simplify_atan2, gfc_simplify_exponent,
	gfc_simplify_log, gfc_simplify_nearest): Use it.

	PR fortran/15441
	PR fortran/29312
	* iresolve.c (gfc_resolve_rrspacing): Give rrspacing library
	routine hidden precision argument.
	(gfc_resolve_spacing): Give spacing library routine hidden
	precision, emin - 1, and tiny(x) arguments.
	* simplify.c (gfc_simplify_nearest): Remove explicit subnormalization.
	(gfc_simplify_rrspacing): Implement formula from Fortran 95 standard.
	(gfc_simplify_spacing): Implement formula from Fortran 2003 standard.
	* trans-intrinsic.c (gfc_intrinsic_map_t) Declare rrspacing and
	spacing via LIBF_FUNCTION
	(prepare_arg_info, call_builtin_clz, gfc_conv_intrinsic_spacing,
	gfc_conv_intrinsic_rrspacing): Remove functions.
	(gfc_conv_intrinsic_function): Remove calls to
	gfc_conv_intrinsic_spacing and gfc_conv_intrinsic_rrspacing.
	* f95-lang.c (gfc_init_builtin_functions): Remove __builtin_clz,
	__builtin_clzl and __builtin_clzll


2006-10-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/15441
	PR fortran/29312
	* configure.ac: Add HAVE_LDEXPF, HAVE_LDEXP, and HAVE_LDEXPL
	* m4/spacing.m4: New file.  Use new HAVE_* defines.
	* m4/rrspacing.m4: Ditto.
	* Makefile.am: Handle new files.
	* configure: Regenerated.
	* Makefile.in: Ditto.
	* config.h.in: Ditto.
	* generated/spacing_r4.c: Generated.
	* generated/spacing_r8.c: Ditto.
	* generated/spacing_r10.c: Ditto.
	* generated/spacing_r16.c: Ditto.
	* generated/rrspacing_r4.c: Ditto.
	* generated/rrspacing_r8.c: Ditto.
	* generated/rrspacing_r10.c: Ditto.
	* generated/rrspacing_r16.c: Ditto.

From-SVN: r117584
2006-10-09 20:55:29 +00:00
Tobias Burnus
bec93d7937 re PR fortran/28585 (Fortran 2003: Support NEW_LINE intrinsic)
PR fortran/28585

	* intrinsic.c (add_functions): Add new_line Fortran 2003 intrinsic.
	* intrinsic.h: Add gfc_simplify_new_line and gfc_check_new_line
	prototypes.
	* check.c (gfc_check_new_line): New function.
	* simplify.c (gfc_simplify_new_line): New function.
	* intrinsic.texi: Document new_line intrinsic.

	* gfortran.dg/new_line.f90: New test.

From-SVN: r117555
2006-10-08 13:21:42 +00:00
Steven G. Kargl
48c7b142f9 arith.c: Change conditional test for inclusion of arctangent().
2006-09-28  Steven G. Kargl <kargl@gcc.gnu.org>

	* arith.c: Change conditional test for inclusion of arctangent().
	(gfc_check_real_range): Change conditional test for use of
	mpfr_subnormalize.
	* simplify.c (gfc_simplify_atan2): Fix conditional for use of
	mpfr_atan2() instead of arctangent().
	(gfc_simplify_exponent): Fix conditional for use of mpfr_get_exp().
 	(gfc_simplify_log): Fix conditional for use of mpfr_atan2() instead
	 of arctangent().
	(gfc_simplify_nearest): Fix conditional for use of mpfr_nextafter().

From-SVN: r117289
2006-09-28 19:31:37 +00:00
Steven G. Kargl
e48d66a949 re PR fortran/28276 (EXPONENT() broken for real constants)
* configure.in: Check for GMP 4.1 or newer.  Check for MPFR 2.2.0 
	or newer.
	* configure: Regenerated.
	* doc/install.texi: Document required versions of GMP and MPFR.
	* fortran/arith.c: Conditionally include arctangent2().
	(gfc_check_real_range): Use mpfr_subnormalize in preference to local
	hack.
	* fortran/trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Append
	l for long double functions.
	* fortran/simplify.c: Wrap Copyright to new line.
	(gfc_simplify_atan2): Use mpfr_atan2 in preference to arctangent2().
        (gfc_simplify_log): Ditto.


	PR fortran/28276
	* fortran/simplify.c (gfc_simplify_exponent): Use mpfr_get_exp in
	preference to broken local hack.

	PR fortran/27021
	* fortran/simplify.c (gfc_simplify_nearest): Use mpfr_nexttoward and
	mpfr_subnormalize to handle numbers near zero in preference to broken
	 local hack.

	PR fortran/28276
	* testsuite/gfortran.dg/exponent_1.f90: New test.

	PR fortran/27021
	* testsuite/gfortran.dg/nearest_1.f90: New test.

From-SVN: r117257
2006-09-27 20:15:22 +00:00
Steven G. Kargl
7bee49dcaa data_1.f90: Fix integer oveflow in integer literal constant.
2006-09-07  Steven G. Kargl  <kargls@comcast.net>

	* gfortran.fortran-torture/compile/data_1.f90: Fix integer oveflow
	in integer literal constant.
  	* gfortran.dg/enum_8.f90: Ditto.
	* gfortran.dg/g77/20030326-1.f: Ditto.

2006-09-07  Steven G. Kargl  <kargls@comcast.net>

	* gfortran.h (gfc_integer_info): Eliminate max_int.
	* arith.c (gfc_arith_init_1): Remove initialization of max_int.
	(gfc_arith_done_1): Remove clearing of max_int.
	(gfc_check_integer_range): Fix range chekcing of overflow.
	* simplify.c (gfc_simplify_not): Construct mask that was max_int.

From-SVN: r116753
2006-09-07 16:48:18 +00:00
François-Xavier Coudert
bf3fb7e43c intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG, LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
* intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG,
	LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
	(add_subroutines): Add LSTAT intrinsic subroutine.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2,
	GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK
	and GFC_ISYM_MCLOCK8.
	* iresolve.c (gfc_resolve_int2, gfc_resolve_int8,
	gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock,
	gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions.
	* check.c (gfc_check_intconv): New function.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
	the added GFC_ISYM_*.
	* simplify.c (gfc_simplify_intconv, gfc_simplify_int2,
	gfc_simplify_int8, gfc_simplify_long): New functions.
	* intrinsic.h (gfc_check_intconv, gfc_simplify_int2,
	gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2,
	gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat,
	gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub):
	Add prototypes.

	* gfortran.dg/mclock.f90: New test.
	* gfortran.dg/int_conv_1.f90: New test.
	* gfortran.dg/stat_1.f90: New test.
	* gfortran.dg/stat_2.f90: New test.

	* configure.ac: Check for function clock.
	* Makefile.am: Compile new file intrinsics/clock.c.
	* intrinsics/clock.c: New file.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* intrinsics/stat.c: Rename the old stat_i?_sub functions to
	helper functions stat_i?_sub_0, and use them for both STAT and
	LSTAT.

From-SVN: r115754
2006-07-26 11:58:48 +00:00
Steven G. Kargl
0ccff66da6 simplify.c (gfc_simplify_rrspacing): Initialize and clear mpfr_t variable.
2006-06-20  Steven G. Kargl  <kargls@comcast.net>

        * simplify.c (gfc_simplify_rrspacing): Initialize and clear mpfr_t
        variable.

        * gfortran.dg/rrspacing_1.f90: New test.

From-SVN: r114821
2006-06-20 17:49:41 +00:00
Paul Thomas
a4a11197f9 re PR fortran/25049 (TRANSPOSE not allowed in initialisation expression)
2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25049
	PR fortran/25050
	* check.c (non_init_transformational): New function.
	(find_substring_ref): New function to signal use of disallowed
	transformational intrinsic in an initialization expression.
	(gfc_check_all_any): Call previous if initialization expr.
	(gfc_check_count): The same.
	(gfc_check_cshift): The same.
	(gfc_check_dot_product): The same.
	(gfc_check_eoshift): The same.
	(gfc_check_minloc_maxloc): The same.
	(gfc_check_minval_maxval): The same.
	(gfc_check_gfc_check_product_sum): The same.
	(gfc_check_pack): The same.
	(gfc_check_spread): The same.
	(gfc_check_transpose): The same.
	(gfc_check_unpack): The same.

	PR fortran/18769
	*intrinsic.c (add_functions): Add gfc_simplify_transfer.
	*intrinsic.h : Add prototype for gfc_simplify_transfer.
	*simplify.c (gfc_simplify_transfer) : New function to act as
	placeholder for eventual implementation.  Emit error for now.

	PR fortran/16206
	* expr.c (find_array_element): Eliminate condition on length of
	offset. Add bounds checking. Rearrange exit. Return try and
	put gfc_constructor result as an argument.
	(find_array_section): New function.
	(find_substring_ref): New function.
	(simplify_const_ref): Add calls to previous.
	(simplify_parameter_variable): Return on NULL expr.
	(gfc_simplify_expr): Only call gfc_expand_constructor for full
	arrays.

	PR fortran/20876
	* match.c (gfc_match_forall): Add missing locus to gfc_code.

2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR libfortran/28005
	* m4/matmul.m4: aystride = 1 does not uniquely detect the
	presence of a temporary transpose; an array element in the
	first dimension produces the same signature.  Detect this
	using the rank of a and add specific code.
	* generated/matmul_r4.c: Regenerate.
	* generated/matmul_r8.c: Regenerate.
	* generated/matmul_r10.c: Regenerate.
	* generated/matmul_r16.c: Regenerate.
	* generated/matmul_c4.c: Regenerate.
	* generated/matmul_c8.c: Regenerate.
	* generated/matmul_c10.c: Regenerate.
	* generated/matmul_c16.c: Regenerate.
	* generated/matmul_i4.c: Regenerate.
	* generated/matmul_i8.c: Regenerate.
	* generated/matmul_i16.c: Regenerate.

2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/16206
	* gfortran.dg/array_initializer_1.f90: New test.

	PR fortran/28005
	* gfortran.dg/matmul_3.f90: New test.

From-SVN: r114802
2006-06-20 04:30:48 +00:00
Jerry DeLisle
545548257d re PR fortran/19310 ([4.1 Only] unnecessary error for overflowing results)
2006-06-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/19310
	* arith.c (gfc_range_check): Return ARITH_OK if -fno-range-check. Add
	return of ARITH_NAN, ARITH_UNDERFLOW, and ARITH_OVERFLOW.
	(gfc_arith_divide): If -fno-range-check allow mpfr to divide by zero.
	* gfortran.h (gfc_option_t): Add new flag.
	* invoke.texi: Document new flag.
	* lang.opt: Add option -frange-check.
	* options.c (gfc_init_options): Initialize new flag.
	(gfc_handle_options): Set flag if invoked.
	* simplify.c (range_check): Add error messages for
	overflow, underflow, and other errors.
	* trans-const.c (gfc_conv_mpfr_to_tree): Build NaN and Inf from mpfr
	result.

From-SVN: r114752
2006-06-18 06:36:45 +00:00
Tobias Schlüter
73464abffe simplify.c (ascii_table): Fix wrong entry.
* simplify.c (ascii_table): Fix wrong entry.

From-SVN: r113523
2006-05-04 15:07:07 +02:00
Francois-Xavier Coudert
49914d0380 re PR fortran/25681 (ICE with len of array of derived type)
PR fortran/25681

	* simplify.c (simplify_len): Character variables with constant
	length can be simplified.

	* gfortran.df/char_type_len.f90: New test.

From-SVN: r113376
2006-04-29 16:31:26 +00:00
Steven G. Kargl
9202989a98 simplify.c (gfc_simplify_verify): Fix return when SET=''.
2006-03-06  Steven G. Kargl  <kargls@comcast.net>

        * simplify.c (gfc_simplify_verify):  Fix return when SET=''.
        * gfortran.dg/verify_2.f90:  New test.

From-SVN: r111791
2006-03-06 20:43:22 +00:00
Steven G. Kargl
def6613406 re PR fortran/20858 (NULL doesn't get its argument type (kind))
2006-02-05  Steven G. Kargl  <kargls@comcast.net>

PR fortran/20858
*decl.c (variable_decl): Improve error message.  Remove initialization
 typespec.  Wrap long line.
*expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
 and rank.
*simplify.c (gfc_simplify_null): Ensure type, kind type, and rank are set.

gfortran.dg/null_1.f90: New test.

From-SVN: r110845
2006-02-10 19:01:05 +00:00
Feng Wang
0ad77f5589 Add 2006 copyright year.
From-SVN: r109490
2006-01-09 02:41:08 +00:00
Feng Wang
7d60270a87 simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal constant.
fortran/
2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>

	* simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
	constant.
	(gfc_simplify_ichar): Get the result from unsinged char and in the
	range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.

Testsuite ChangeLog entry:
2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>

	* gfortran.dg/intrinsic_i_char.f90: New test.

From-SVN: r109488
2006-01-09 01:00:23 +00:00
Steven G. Kargl
ef98c52a44 re PR fortran/25458 ([4.1] Kind of constants in generic intrinsics)
PR fortran/25458
	* simplify.c (gfc_simplify_ibset, gfc_simplify_not): Add call to
	twos_complement.

	* gfortran.dg/chkbits.f90: New test.


Co-Authored-By: Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

From-SVN: r108720
2005-12-17 17:30:26 +00:00
Francois-Xavier Coudert
991bb83249 re PR fortran/23912 (MOD function requires same kind arguments)
PR fortran/23912

	* iresolve.c (gfc_resolve_dim, gfc_resolve_mod,
	gfc_resolve_modulo): When arguments have different kinds, fold
	the lower one to the largest kind.
	* check.c (gfc_check_a_p): Arguments of different kinds is not
	a hard error, but an extension.
	* simplify.c (gfc_simplify_dim, gfc_simplify_mod,
	gfc_simplify_modulo): When arguments have different kinds, fold
        the lower one to the largest kind.

	* gfortran.dg/modulo_1.f90: New test.

From-SVN: r107566
2005-11-27 14:01:36 +00:00
Francois-Xavier Coudert
5d723e5434 fget.c: New file.
* intrinsics/fget.c: New file.
	* intrinsics/ftell.c: New file.
	* io/unix.c (stream_offset): New function.
	* io/io.h: Add prototype for stream_offset.
	* Makefile.am: Add intrinsics/fget.c and intrinsics/ftell.c.
	* Makefile.in: Regenerate.

	* intrinsic.c (add_functions): Add COMPLEX, FTELL, FGETC, FGET,
	FPUTC, FPUT, AND, XOR and OR intrinsic functions.
	(add_subroutines): Add FGETC, FGET, FPUTC, FPUT and FTELL intrinsic
	subroutines.
	* gfortran.h: Add GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET,
	GFC_ISYM_FGETC, GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL,
	GFC_ISYM_OR, GFC_ISYM_XOR.
	* iresolve.c (gfc_resolve_and, gfc_resolve_complex,
	gfc_resolve_or, gfc_resolve_fgetc, gfc_resolve_fget,
	gfc_resolve_fputc, gfc_resolve_fput, gfc_resolve_ftell,
	gfc_resolve_xor, gfc_resolve_fgetc_sub, gfc_resolve_fget_sub,
	gfc_resolve_fputc_sub, gfc_resolve_fput_sub, gfc_resolve_ftell_sub):
	New functions.
	* check.c (gfc_check_complex, gfc_check_fgetputc_sub,
	gfc_check_fgetputc, gfc_check_fgetput_sub, gfc_check_fgetput,
	gfc_check_ftell, gfc_check_ftell_sub, gfc_check_and): New functions.
	* simplify.c (gfc_simplify_and, gfc_simplify_complex, gfc_simplify_or,
	gfc_simplify_xor): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
	GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET, GFC_ISYM_FGETC,
	GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL, GFC_ISYM_OR and
	GFC_ISYM_XOR.
	* intrinsic.h: Add prototypes for all functions added to iresolve.c,
	simplify.c and check.c.

	* gfortran.dg/complex_intrinsic_1.f90: New test.
	* gfortran.dg/complex_intrinsic_2.f90: New test.
	* gfortran.dg/fgetc_1.f90: New test.
	* gfortran.dg/fgetc_2.f90: New test.
	* gfortran.dg/fgetc_3.f90: New test.
	* gfortran.dg/ftell_1.f90: New test.
	* gfortran.dg/ftell_2.f90: New test.
	* gfortran.dg/gnu_logical_1.F: New test.
	* gfortran.dg/gnu_logical_2.f90: New test.

From-SVN: r106859
2005-11-13 09:33:19 +00:00
Steven G. Kargl
6970fcc83e re PR fortran/23516 (IMAG is not a generic function when implicit none is declared)
PR fortran/23516
* intrinsic.c (add_function): Add IMAG, IMAGPART, and REALPART
  intrinsics.
* intrinsic.h: Prototypes for gfc_simplify_realpart and
  gfc_resolve_realpart.
* intrinsic.texi: Document intrinsic procedures.
* simplify.c (gfc_simplify_realpart): New function.
* irseolve.c (gfc_resolve_realpart): New function.

From-SVN: r104537
2005-09-22 19:00:24 +00:00
Richard Sandiford
d1d26ecf9f re PR fortran/19269 (transpose(reshape(...)) of character array segfaults.)
PR fortran/19269
	* simplify.c (gfc_simplify_transpose): Set the result's typespec from
	the source, not the first element of the return value.

From-SVN: r103982
2005-09-07 07:36:12 +00:00
Feng Wang
d3642f893a For the 60th anniversary of Chinese people��s Anti-Japan war victory.
2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	PR fortran/15966
	PR fortran/18781
	* arith.c (gfc_hollerith2int, gfc_hollerith2real,
	gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical):
	New functions.
	(eval_intrinsic): Don't evaluate if Hollerith constant arguments exist.
	* arith.h (gfc_hollerith2int, gfc_hollerith2real,
	gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical):
	Add prototypes.
	* expr.c (free_expr0): Free memery allocated for Hollerith constant.
	(gfc_copy_expr): Allocate and copy string if Expr is from Hollerith.
	(gfc_check_assign): Enable conversion from Hollerith to other.
	* gfortran.h (bt): Add BT_HOLLERITH.
	(gfc_expr): Add from_H flag.
	* intrinsic.c (gfc_type_letter): Return 'h' for BT_HOLLERITH.
	(add_conversions): Add conversions from Hollerith constant to other.
	(do_simplify): Don't simplify if  Hollerith constant arguments exist.
	* io.c (resolve_tag): Enable array in FORMAT tag under GFC_STD_GNU.
	* misc.c (gfc_basetype_name): Return "HOLLERITH" for BT_HOLLERITH.
	(gfc_type_name): Print "HOLLERITH" for BT_HOLLERITH.
	* primary.c (match_hollerith_constant): New function.
	(gfc_match_literal_constant): Add match Hollerith before Integer.
	* simplify.c (gfc_convert_constant): Add conversion from Hollerith
	to other.
	* trans-const.c (gfc_conv_constant_to_tree): Use VIEW_CONVERT_EXPR to
	convert Hollerith constant to tree.
	* trans-io.c (gfc_convert_array_to_string): Get array's address and
	length to set string expr.
	(set_string): Deal with array assigned Hollerith constant and character
	array.
	* gfortran.texi: Document Hollerith constants as extention support.

2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	PR fortran/15966
	PR fortran/18781
	* gfortran.dg/hollerith.f90: New.
	* gfortran.dg/hollerith2.f90: New.
	* gfortran.dg/hollerith3.f90: New.
	* gfortran.dg/hollerith4.f90: New.
	* gfortran.dg/hollerith_f95.f90: New.
	* gfortran.dg/hollerith_legacy.f90: New.
	* gfortran.dg/g77/cpp4.F: New. Port from g77.

2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	* io/transfer.c (formatted_transfer): Enable FMT_A on other types to
	support Hollerith constants.

From-SVN: r101688
2005-07-07 07:54:58 +00:00