diff options
author | Christopher D. Rickett <crickett@lanl.gov> | 2007-07-18 22:02:21 +0000 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-07-19 00:02:21 +0200 |
commit | c00a2e6beb98a0c8ae9b0d0feb85c88b7254981c (patch) | |
tree | e53738f69c31ea1581cfd0fcd54a20af2208185e | |
parent | 0ef0421e82f875cdb88620605dbd7ff42e9c5632 (diff) | |
download | gcc-c00a2e6beb98a0c8ae9b0d0feb85c88b7254981c.zip gcc-c00a2e6beb98a0c8ae9b0d0feb85c88b7254981c.tar.gz gcc-c00a2e6beb98a0c8ae9b0d0feb85c88b7254981c.tar.bz2 |
re PR fortran/32801 (USE of ISO_C_BINDING, ONLY: C_LOC causes compiler seg fault)
2007-07-18 Christopher D. Rickett <crickett@lanl.gov>
PR fortran/32801
* symbol.c (generate_isocbinding_symbol): Fix bug where
ISOCBINDING_FUNPTR was generated for C_LOC instead of the needed
ISOCBINDING_PTR.
2007-07-18 Christopher D. Rickett <crickett@lanl.gov>
PR fortran/32801
* gfortran.dg/pr32801.f03: New test case.
From-SVN: r126732
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr32801.f03 | 6 |
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2b46228..0c46c5b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2007-07-18 Christopher D. Rickett <crickett@lanl.gov> + + PR fortran/32801 + * symbol.c (generate_isocbinding_symbol): Fix bug where + ISOCBINDING_FUNPTR was generated for C_LOC instead of the needed + ISOCBINDING_PTR. + 2007-07-17 Janus Weil <jaydub66@gmail.com> PR fortran/32535 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index e83c190..30afd4b 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -3766,8 +3766,10 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, processing the file. */ generate_isocbinding_symbol (mod_name, s == ISOCBINDING_FUNLOC - ? ISOCBINDING_FUNPTR : ISOCBINDING_FUNPTR, + || s == ISOCBINDING_F_PROCPOINTER + ? ISOCBINDING_FUNPTR : ISOCBINDING_PTR, (char *)(s == ISOCBINDING_FUNLOC + || s == ISOCBINDING_F_PROCPOINTER ? "_gfortran_iso_c_binding_c_funptr" : "_gfortran_iso_c_binding_c_ptr")); tmp_sym->ts.derived = diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1cac088..9ada9e8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-07-18 Christopher D. Rickett <crickett@lanl.gov> + + PR fortran/32801 + * gfortran.dg/pr32801.f03: New test case. + 2007-07-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gcc.dg/c99-math-double-1.c: Mark test variables as volatile. diff --git a/gcc/testsuite/gfortran.dg/pr32801.f03 b/gcc/testsuite/gfortran.dg/pr32801.f03 new file mode 100644 index 0000000..1043924 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr32801.f03 @@ -0,0 +1,6 @@ +! { dg-do compile } +! Verify that C_PTR is auto generated because it's needed by C_LOC. +! This tests that PR 32801 is fixed. +PROGRAM c_loc_prob + USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC +END PROGRAM c_loc_prob |