Bug 32601 - [ISO Bind C] Access to private components not prevented
Summary: [ISO Bind C] Access to private components not prevented
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: accepts-invalid, ice-on-invalid-code
Depends on:
Blocks: ISO_C_Binding
  Show dependency treegraph
 
Reported: 2007-07-02 22:56 UTC by Tobias Burnus
Modified: 2007-07-12 20:24 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2007-07-02 22:56:02 UTC
USE ISO_C_BINDING, only: c_null_ptr, c_ptr
  type(c_ptr) :: t
  t = c_null_ptr
  print *, c_null_ptr, t
  end

should not be allowed (at least with -std=f2003) as type(c_ptr) has only private components.
Comment 1 Tobias Burnus 2007-07-04 18:48:24 UTC
Related:

  print *, c_loc(4)
  end

gives an ICE. Expected:
Error: xxxx.f90, line 5: The argument to C_LOC must be a pointer or target
additionally with -std=f2003:
Error: xxxx.f90, line 5: Derived type C_PTR in io-list has PRIVATE components
Comment 2 Tobias Burnus 2007-07-12 19:52:16 UTC
Subject: Bug 32601

Author: burnus
Date: Thu Jul 12 19:52:03 2007
New Revision: 126598

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=126598
Log:
2007-07-12  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32599
	* decl.c (verify_c_interop_param): Require character string dummy
	args to BIND(C) procedures to have length 1.
	* resolve.c (resolve_fl_procedure): Modify parameter checking for
	BIND(C) procedures.

	PR fortran/32601
	* resolve.c (gfc_iso_c_func_interface): Verify that a valid
	expression is given as an argument to C_LOC and C_ASSOCIATED.
	* trans-io.c (transfer_expr): Add argument for code block.  Add
	standards check to determine if an error message should be
	reported for printing C_PTR or C_FUNPTR.
	(transfer_array_component): Update arguments to transfer_expr.
	(gfc_trans_transfer): Ditto.

	* symbol.c (gen_cptr_param): Fix whitespace.


2007-07-12  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32599
	* gfortran.dg/32599.f03: New test case.

	PR fortran/32601
	* gfortran.dg/32601.f03: New test case.
	* gfortran.dg/32601_1.f03: Ditto.
	* gfortran.dg/c_ptr_tests_9.f03: Updated dg-options.
	* gfortran.dg/c_ptr_tests_10.f03: Ditto.


Added:
    trunk/gcc/testsuite/gfortran.dg/pr32599.f03
    trunk/gcc/testsuite/gfortran.dg/pr32601.f03
    trunk/gcc/testsuite/gfortran.dg/pr32601_1.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/decl.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/symbol.c
    trunk/gcc/fortran/trans-io.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_10.f03
    trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_9.f03

Comment 3 Tobias Burnus 2007-07-12 20:24:33 UTC
Fixed.