[Bug fortran/23815] Add -byteswapio flag
--- Comment #33 from tobi at gcc dot gnu dot org 2006-02-09 15:12 --- Thomas, I'm seeing the following failure on the trunk: Running /home/pcl331/schluter/src/gcc/gcc/testsuite/gfortran.dg/dg.exp ... FAIL: gfortran.dg/unf_io_convert_4.f90 -O0 execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O1 execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O2 execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O3 -fomit-frame-pointer execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O3 -fomit-frame-pointer -funroll-loops execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -O3 -g execution test FAIL: gfortran.dg/unf_io_convert_4.f90 -Os execution test -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #34 from tkoenig at gcc dot gnu dot org 2006-02-09 20:03 --- (In reply to comment #33) Hi Tobi, I'm seeing the following failure on the trunk: Running /home/pcl331/schluter/src/gcc/gcc/testsuite/gfortran.dg/dg.exp ... FAIL: gfortran.dg/unf_io_convert_4.f90 -O0 execution test Strange. I don't see this with revision 110664 on i686-pc-linux-gnu, and also nothing on http://gcc.gnu.org/ml/gcc-testresults/2006-02/msg00430.html http://gcc.gnu.org/ml/gcc-testresults/2006-02/msg00416.html What system are you running on? What happens if you run this test case directly? Thomas -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #31 from tkoenig at gcc dot gnu dot org 2006-02-08 20:14 --- Subject: Bug 23815 Author: tkoenig Date: Wed Feb 8 20:14:00 2006 New Revision: 110764 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=110764 Log: 2005-02-08 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment variable. * invoke.texi: Mention the Runtime chapter. Document the -fconvert= option. * gfortran.h: Add options_convert. * lang.opt: Add fconvert=little-endian, fconvert=big-endian, fconvert=native and fconvert=swap. * trans-decl.c (top level): Add gfor_fndecl_set_convert. (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert. (gfc_generate_function_code): If -fconvert was specified, and this is the main program, add a call to set_convert(). * options.c: Handle the -fconvert options. 2005-02-08 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * runtime/environ.c (init_unformatted): Add GFORTRAN_CONVERT_UNIT environment variable. (top level): Add defines, type and static variables for GFORTRAN_CONVERT_UNIT handling. (search_unit): New function. (match_word): New function. (match_integer): New function. (next_token): New function. (push_token): New function. (mark_single): New function. (mark_range): New funciton. (do_parse): New function. (init_unformatted): New function. (get_unformatted_convert): New function. * runtime/compile_options.c: Add set_convert(). * libgfortran.h: Add convert to compile_options_t. * io/open.c (st_open): Call get_unformatted_convert to get unit default; if CONVERT_NONE is returned, check for the presence of a CONVERT specifier and use it. As default, use compile_options.convert. * io/io.h (top level): Add CONVERT_NONE to unit_convert, to signal nothing has been set. (top level): Add prototype for get_unformatted_convert. 2005-02-08 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * unf_io_convert_4.f90: New test. Added: branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/unf_io_convert_4.f90 Modified: branches/gcc-4_1-branch/gcc/fortran/ChangeLog branches/gcc-4_1-branch/gcc/fortran/gfortran.h branches/gcc-4_1-branch/gcc/fortran/gfortran.texi branches/gcc-4_1-branch/gcc/fortran/invoke.texi branches/gcc-4_1-branch/gcc/fortran/lang.opt branches/gcc-4_1-branch/gcc/fortran/options.c branches/gcc-4_1-branch/gcc/fortran/trans-decl.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog branches/gcc-4_1-branch/libgfortran/ChangeLog branches/gcc-4_1-branch/libgfortran/io/io.h branches/gcc-4_1-branch/libgfortran/io/open.c branches/gcc-4_1-branch/libgfortran/libgfortran.h branches/gcc-4_1-branch/libgfortran/runtime/compile_options.c branches/gcc-4_1-branch/libgfortran/runtime/environ.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #32 from tkoenig at gcc dot gnu dot org 2006-02-08 20:15 --- Fixed on 4.1 as well. Closing. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #30 from tkoenig at gcc dot gnu dot org 2006-02-06 20:12 --- Subject: Bug 23815 Author: tkoenig Date: Mon Feb 6 20:12:44 2006 New Revision: 110664 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=110664 Log: 2005-02-06 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment variable. * invoke.texi: Mention the Runtime chapter. Document the -fconvert= option. * gfortran.h: Add options_convert. * lang.opt: Add fconvert=little-endian, fconvert=big-endian, fconvert=native and fconvert=swap. * trans-decl.c (top level): Add gfor_fndecl_set_convert. (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert. (gfc_generate_function_code): If -fconvert was specified, and this is the main program, add a call to set_convert(). * options.c: Handle the -fconvert options. 2005-02-06 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * runtime/environ.c (init_unformatted): Add GFORTRAN_CONVERT_UNIT environment variable. (top level): Add defines, type and static variables for GFORTRAN_CONVERT_UNIT handling. (search_unit): New function. (match_word): New function. (match_integer): New function. (next_token): New function. (push_token): New function. (mark_single): New function. (mark_range): New funciton. (do_parse): New function. (init_unformatted): New function. (get_unformatted_convert): New function. * runtime/compile_options.c: Add set_convert(). * libgfortran.h: Add convert to compile_options_t. * io/open.c (st_open): Call get_unformatted_convert to get unit default; if CONVERT_NONE is returned, check for the presence of a CONVERT specifier and use it. As default, use compile_options.convert. * io/io.h (top level): Add CONVERT_NONE to unit_convert, to signal nothing has been set. (top level): Add prototype for get_unformatted_convert. 2005-02-06 Thomas Koenig [EMAIL PROTECTED] PR libfortran/23815 * unf_io_convert_4.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/unf_io_convert_4.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/gfortran.h trunk/gcc/fortran/gfortran.texi trunk/gcc/fortran/invoke.texi trunk/gcc/fortran/lang.opt trunk/gcc/fortran/options.c trunk/gcc/fortran/trans-decl.c trunk/gcc/testsuite/ChangeLog trunk/libgfortran/ChangeLog trunk/libgfortran/io/io.h trunk/libgfortran/io/open.c trunk/libgfortran/libgfortran.h trunk/libgfortran/runtime/compile_options.c trunk/libgfortran/runtime/environ.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #29 from tkoenig at gcc dot gnu dot org 2006-01-27 20:40 --- Updated patch, which also implements a compile-time option. Hopefully, this will be reviewed some day. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/fortra|http://gcc.gnu.org/ml/fortra |n/2006-01/msg00179.html |n/2006-01/msg00294.html http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #28 from tkoenig at gcc dot gnu dot org 2006-01-15 21:07 --- Patch for environment variable in for review. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL||http://gcc.gnu.org/ml/fortra ||n/2006-01/msg00179.html Keywords||patch http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #27 from tkoenig at gcc dot gnu dot org 2006-01-09 22:53 --- Created an attachment (id=10602) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10602action=view) proposed patch for environment variable This implements setting the default for byte-swapping via an environment variable. Still needs documentation etc. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added Attachment #10350|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #26 from tkoenig at gcc dot gnu dot org 2005-12-13 21:11 --- Subject: Bug 23815 Author: tkoenig Date: Tue Dec 13 21:11:23 2005 New Revision: 108483 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=108483 Log: 2005-12-13 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * io.c (top level): Add convert to io_tag. (resolve_tag): convert is GFC_STD_GNU. (match_open_element): Add convert. (gfc_free_open): Likewise. (gfc_resolve_open): Likewise. (gfc_free_inquire): Likewise. (match_inquire_element): Likewise. * dump-parse-tree.c (gfc_show_code_node): Add convet for open and inquire. gfortran.h: Add convert to gfc_open and gfc_inquire. * trans-io.c (gfc_trans_open): Add convert. (gfc_trans_inquire): Likewise. * ioparm.def: Add convert to open and inquire. * gfortran.texi: Document CONVERT. 2005-12-13 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * io/file_pos.c (unformatted_backspace): If flags.convert does not equal CONVERT_NATIVE, reverse the record marker. * io/open.c: Add convert_opt[]. (st_open): If no convert option is given, set CONVERT_NATIVE. If CONVERT_BIG or CONVERT_LITTLE are given, set flags.convert to CONVERT_NATIVE or CONVERT_SWAP (depending on wether we have a big- or little-endian system). * io/transfer.c (unformatted_read): Remove unused attribute from arguments. If we need to reverse bytes, break up large transfers into a loop. Split complex numbers into its two parts. (unformatted_write): Likewise. (us_read): If flags.convert does not equal CONVERT_NATIVE, reverse the record marker. (next_record_w): Likewise. (reverse_memcpy): New function. * io/inquire.c (inquire_via_unit): Implement convert. * io/io.h (top level): Add enum unit_convert. Add convert to st_parameter_open and st_parameter_inquire. Define IOPARM_OPEN_HAS_CONVERT and IOPARM_INQUIRE_HAS_CONVERT. Increase padding for st_parameter_dt. Declare reverse_memcpy(). 2005-12-13 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * gfortran.dg/unf_io_convert_1.f90: New test. * gfortran.dg/unf_io_convert_2.f90: New test. * gfortran.dg/unf_io_convert_3.f90: New test. Added: branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90 Modified: branches/gcc-4_1-branch/gcc/fortran/ChangeLog branches/gcc-4_1-branch/gcc/fortran/dump-parse-tree.c branches/gcc-4_1-branch/gcc/fortran/gfortran.h branches/gcc-4_1-branch/gcc/fortran/gfortran.texi branches/gcc-4_1-branch/gcc/fortran/io.c branches/gcc-4_1-branch/gcc/fortran/ioparm.def branches/gcc-4_1-branch/gcc/fortran/trans-io.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog branches/gcc-4_1-branch/libgfortran/ChangeLog branches/gcc-4_1-branch/libgfortran/io/file_pos.c branches/gcc-4_1-branch/libgfortran/io/inquire.c branches/gcc-4_1-branch/libgfortran/io/io.h branches/gcc-4_1-branch/libgfortran/io/open.c branches/gcc-4_1-branch/libgfortran/io/transfer.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #23 from tkoenig at gcc dot gnu dot org 2005-12-10 13:09 --- Updated patch. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/fortra|http://gcc.gnu.org/ml/fortra |n/2005-12/msg00127.html |n/2005-12/msg00146.html http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #24 from tkoenig at gcc dot gnu dot org 2005-12-10 20:02 --- Subject: Bug 23815 Author: tkoenig Date: Sat Dec 10 20:01:56 2005 New Revision: 108358 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=108358 Log: 2005-12-10 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * io.c (top level): Add convert to io_tag. (resolve_tag): convert is GFC_STD_GNU. (match_open_element): Add convert. (gfc_free_open): Likewise. (gfc_resolve_open): Likewise. (gfc_free_inquire): Likewise. (match_inquire_element): Likewise. * dump-parse-tree.c (gfc_show_code_node): Add convet for open and inquire. gfortran.h: Add convert to gfc_open and gfc_inquire. * trans-io.c (gfc_trans_open): Add convert. (gfc_trans_inquire): Likewise. * ioparm.def: Add convert to open and inquire. * gfortran.texi: Document CONVERT. 2005-12-10 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * io/file_pos.c (unformatted_backspace): If flags.convert does not equal CONVERT_NATIVE, reverse the record marker. * io/open.c: Add convert_opt[]. (st_open): If no convert option is given, set CONVERT_NATIVE. If CONVERT_BIG or CONVERT_LITTLE are given, set flags.convert to CONVERT_NATIVE or CONVERT_SWAP (depending on wether we have a big- or little-endian system). * io/transfer.c (unformatted_read): Remove unused attribute from arguments. If we need to reverse bytes, break up large transfers into a loop. Split complex numbers into its two parts. (unformatted_write): Likewise. (us_read): If flags.convert does not equal CONVERT_NATIVE, reverse the record marker. (next_record_w): Likewise. (reverse_memcpy): New function. * io/inquire.c (inquire_via_unit): Implement convert. * io/io.h (top level): Add enum unit_convert. Add convert to st_parameter_open and st_parameter_inquire. Define IOPARM_OPEN_HAS_CONVERT and IOPARM_INQUIRE_HAS_CONVERT. Increase padding for st_parameter_dt. Declare reverse_memcpy(). 2005-12-10 Thomas Koenig [EMAIL PROTECTED] PR fortran/23815 * gfortran.dg/unf_io_convert_1.f90: New test. * gfortran.dg/unf_io_convert_2.f90: New test. * gfortran.dg/unf_io_convert_3.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 trunk/gcc/testsuite/gfortran.dg/unf_io_convert_2.f90 trunk/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/dump-parse-tree.c trunk/gcc/fortran/gfortran.h trunk/gcc/fortran/gfortran.texi trunk/gcc/fortran/io.c trunk/gcc/fortran/ioparm.def trunk/gcc/fortran/trans-io.c trunk/gcc/testsuite/ChangeLog trunk/libgfortran/ChangeLog trunk/libgfortran/io/file_pos.c trunk/libgfortran/io/inquire.c trunk/libgfortran/io/io.h trunk/libgfortran/io/open.c trunk/libgfortran/io/transfer.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #25 from tkoenig at gcc dot gnu dot org 2005-12-10 20:12 --- The committed patch implements the basic functionality, via the CONVERT keyword for open. We still need different options to select this (via compile-time flags and environment variables), so I'm leaving this bug open. Thomas -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/fortra| |n/2005-12/msg00146.html | Keywords|patch | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #22 from tkoenig at gcc dot gnu dot org 2005-12-06 21:45 --- Added new patch. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL||http://gcc.gnu.org/ml/fortra ||n/2005-12/msg00127.html Keywords||patch http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #19 from tkoenig at gcc dot gnu dot org 2005-11-27 22:14 --- Created an attachment (id=10350) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10350action=view) broken patch The patches for this PR have been obsoleted of the introduction of the thread-safety patch. I have a patch (attached), but it causes quite a number of regressions (something messes up the gfc_unit) and I haven't found the reason yet. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added Attachment #10224|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #20 from tkoenig at gcc dot gnu dot org 2005-11-27 22:27 --- Removed patch keyword. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/fortra| |n/2005-11/msg00451.html | Keywords|patch | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #21 from sgk at troutmask dot apl dot washington dot edu 2005-11-27 22:42 --- Subject: Re: Add -byteswapio flag On Sun, Nov 27, 2005 at 10:15:02PM -, tkoenig at gcc dot gnu dot org wrote: I have a patch (attached), but it causes quite a number of regressions (something messes up the gfc_unit) and I haven't found the reason yet. gfc_unit may need to be locked before its accessed. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #18 from tkoenig at gcc dot gnu dot org 2005-11-18 21:17 --- Updated patch. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/fortra|http://gcc.gnu.org/ml/fortra |n/2005-11/msg00372.html |n/2005-11/msg00451.html http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #15 from rrr6399 at futuretek dot com 2005-11-11 13:26 --- I think the approach of having multiple ways of changing the behavior is a good one. Many Unix programs do this kind of thing to allow the user to choose the best way to accomplish the goal. I've found each approach useful in the past. The environment variable approach also allows the same executable to be used for different scenarios. The only negative I see is if the executable was compiled by a different compiler (ifort, pgf95, etc.). A user might expect that the behavior will change with an environment variable setting and then wonder why it didn't. Perhaps the same environment variable names used by ifort could be used by gfortran to limit this issue a bit? (In reply to comment #14) Thomas, I'm not in favor of environmental variables, which I think would also be Paul Brook's position. It's too easy to have the variables set or unset at the wrong time. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #16 from tkoenig at gcc dot gnu dot org 2005-11-11 23:53 --- Created an attachment (id=10224) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10224action=view) New version of patch This patch should be fairly complete, without documentation. This only implements the convert keyword for open and inquire -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added Attachment #10210|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #17 from tkoenig at gcc dot gnu dot org 2005-11-12 00:02 --- (In reply to comment #14) Thomas, I'm not in favor of environmental variables, which I think would also be Paul Brook's position. It's too easy to have the variables set or unset at the wrong time. In the docs, I would recommend setting them via GFORTRAN_CONVERT_BIG_ENDIAN=3 progname or (setenv GFORTRAN_CONVERT_BIG_ENDIAN=3 ; progname ) What are your plans for REAL(10), REAL(16), INTEGER(16), COMPLEX(10), and COMPLEX(16)? AFAIK, the reals may have padding issues. I don't have enough information about alignment to get REAL(10) to work on a big-endian system. If we use those, we also get bitten by the 12-byte/16-byte alignment issue for different architectures. Does any big-endian architecture have REAL(10)? (In reply to comment #15) The environment variable approach also allows the same executable to be used for different scenarios. The only negative I see is if the executable was compiled by a different compiler (ifort, pgf95, etc.). A user might expect that the behavior will change with an environment variable setting and then wonder why it didn't. Perhaps the same environment variable names used by ifort could be used by gfortran to limit this issue a bit? Ifort uses environment variables based on unit numbers, file extensions, and I don't know what else. I'd hate to copy all that. Also,I'd rather stick to the GFORTRAN_* namespace of environment variables. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #12 from tkoenig at gcc dot gnu dot org 2005-11-10 22:39 --- Created an attachment (id=10210) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10210action=view) proposed patch, without docs (so far) Here's a partial solution, which implements the CONVERT keyword in the open statement. INQUIRE doesn't work yet. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |tkoenig at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #13 from tkoenig at gcc dot gnu dot org 2005-11-10 22:53 --- Also, little_endian and big_endian have to be converted to native or swap, depending on the architecture. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #14 from kargl at gcc dot gnu dot org 2005-11-11 04:52 --- Thomas, I'm not in favor of environmental variables, which I think would also be Paul Brook's position. It's too easy to have the variables set or unset at the wrong time. OTOH, you're working on a patch, so it's up to you. What are your plans for REAL(10), REAL(16), INTEGER(16), COMPLEX(10), and COMPLEX(16)? AFAIK, the reals may have padding issues. -- kargl at gcc dot gnu dot org changed: What|Removed |Added CC||kargl at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #11 from tkoenig at gcc dot gnu dot org 2005-11-05 22:21 --- OK, for the interface... My suggestion would be to have three levels of supplying this value (ifort has five or six :-) First, an option to supply to the compiler. This could be -fconvert=big_endian -fconvert=little_endian -fconvert=native (the default) and maybe, at a later date, -fconvert=vax_d -fconvert=ibm_360. This would be valid for all the units. With this option alone, it would not be possible to write a conversion program, so we need something else. This could be overridden by a CONVERT=BIG_ENDIAN etc. in the OPEN statement. This, in turn, could be overridden by environment variables in the format GFORTRAN_CONVERT_BIG_ENDIAN=10,20,30,40 GFORTRAN_CONVERT_LITTLE_ENDIAN=11,21,31,41 Agreed? It would probably best to implement the compiler swith as selecting a library at runtime. I'll leave that to a later date :-) If anybody knows how to set an environment variable in a dejagnu testcase, please tell :-) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #8 from pinskia at gcc dot gnu dot org 2005-11-02 17:16 --- All P1 enhancements not targeted towards 4.1, moving to P5. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Priority|P1 |P5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #9 from rrr6399 at futuretek dot com 2005-11-02 18:17 --- I imagine code from g95 could be leveraged to support this feature couldn't it? This is a really important feature, especially in corporate environments where there is usually mix of big-endian and little-endian machines. (Of course, the current 64 bit record delimitters for unformatted files eliminates any hope of interoperability with other fortran compilers.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #10 from tkoenig at gcc dot gnu dot org 2005-11-02 21:20 --- (In reply to comment #9) I imagine code from g95 could be leveraged to support this feature couldn't it? Rather not. The libraries have diverged pretty much so it is probably easier to write this from scratch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #3 from tobi at gcc dot gnu dot org 2005-10-11 13:25 --- (In reply to comment #2) In case anybody wants to work on this, I have an old unfinished patch lying around that adds builtins and RTL codes for byteswap operation. This allows to use platform specific tricks that almost any platform has. This would have to be implemented in the library, so the effects of such a patch would only matter in the code GCC generates when compiling the library. IOW, I don't think this would be of much benefit here. -- tobi at gcc dot gnu dot org changed: What|Removed |Added CC||tobi at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #4 from tkoenig at gcc dot gnu dot org 2005-10-11 18:40 --- I'm trying to work on this. I would prefer a syntax open(...,convert=little_endian) or something like that. -- tkoenig at gcc dot gnu dot org changed: What|Removed |Added CC||tkoenig at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #5 from Tobias dot Schlueter at physik dot uni-muenchen dot de 2005-10-11 19:01 --- Subject: Re: Add -byteswapio flag tkoenig at gcc dot gnu dot org wrote: --- Comment #4 from tkoenig at gcc dot gnu dot org 2005-10-11 18:40 --- I'm trying to work on this. I would prefer a syntax open(...,convert=little_endian) or something like that. This wouldn't allow taking sources and data files from a big-endian platform to a little-endian platform without either conversion of the data files or modifications to the sources, so this will also have to be settable at runtime. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #6 from rrr6399 at futuretek dot com 2005-10-11 19:20 --- Many compilers, like the Intel and PGI ones for instance, simply have a -byteswap flag that is set at compile time. That way any unformatted data that is input or output is expected to be switched to Little or Big Endian all the time. This is typically what we've needed over the years. I haven't really seen a case to only byteswap certain files. A run time option would work as well as long as people remember to set the environment variable or whatever. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Comment #7 from tkoenig at gcc dot gnu dot org 2005-10-11 19:37 --- (In reply to comment #6) Many compilers, like the Intel and PGI ones for instance, simply have a -byteswap flag that is set at compile time. ifort actually uses -convert big_endian or -convert little_endian to supply defaults. This is better than specifying byteswapping, because it is (if set) platform-independent. We could also use environment variables the same way that ifort does. Three ways to specify the same thing... but I think there's a need for that. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-12 14:29 --- Confirmed. -- What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed||1 Last reconfirmed|-00-00 00:00:00 |2005-09-12 14:29:20 date|| Summary|Add -byteswapio flag|Add -byteswapio flag http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815
[Bug fortran/23815] Add -byteswapio flag
--- Additional Comments From falk at debian dot org 2005-09-12 19:22 --- In case anybody wants to work on this, I have an old unfinished patch lying around that adds builtins and RTL codes for byteswap operation. This allows to use platform specific tricks that almost any platform has. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23815