- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This little example:
If you add /standard-semantics, the error goes away with this specific example, but not in my original source.
[fortran]MODULE AssociateAndAllocate IMPLICIT NONE !---- TYPE :: b_type INTEGER :: b_comp END TYPE b_type TYPE, PUBLIC :: a_type TYPE(b_type), ALLOCATABLE :: a_comp(:) END TYPE a_type CONTAINS SUBROUTINE proc(a) !---- TYPE(a_type), INTENT(INOUT) :: a !---- CHARACTER(:), ALLOCATABLE :: tmp(:) !**** ASSOCIATE(assoc => a%a_comp(1)) assoc%b_comp = 10 ALLOCATE(CHARACTER(assoc%b_comp):: tmp(5)) END ASSOCIATE END SUBROUTINE proc END MODULE AssociateAndAllocate [/fortran]gives this:
[plain]>ifort /warn:all /check:all AssociateAndAllocate.f90 Intel Visual Fortran Compiler XE for applications running on IA-32, Version 1 2.0.1.127 Build 20101116 Copyright (C) 1985-2010 Intel Corporation. All rights reserved. 0_12307 : catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Probl em Report. Note: File and line given may not be explicit cause of this error. compilation aborted for AssociateAndAllocate.f90 (code 1)[/plain]
If you add /standard-semantics, the error goes away with this specific example, but not in my original source.
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have reproduced and reported to engineering with a request for a workaround. I will update this thread when I have more information. The tracking number is: DPD200165006
------
Wendy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Not a great workaround, but I find if I remove /check:all the internal compiler no longer occurrs.
Wendy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My planned workaround was to replace the associate-name in the type-spec in the allocate statement with the full "selector", but (with /check:all still on) that just creates a runtime issue...
[fortran]MODULE AssociateAndAllocateDeluxe IMPLICIT NONE !---- TYPE :: b_type INTEGER :: b_comp END TYPE b_type TYPE, PUBLIC :: a_type TYPE(b_type), ALLOCATABLE :: a_comp(:) END TYPE a_type CONTAINS SUBROUTINE proc(a) !---- TYPE(a_type), INTENT(INOUT) :: a !---- CHARACTER(:), ALLOCATABLE :: tmp(:) INTEGER :: i !**** i = 1 ASSOCIATE(assoc => a%a_comp(i)) assoc%b_comp = 10 ALLOCATE(CHARACTER(a%a_comp(i)%b_comp):: tmp(5)) END ASSOCIATE END SUBROUTINE proc END MODULE AssociateAndAllocateDeluxe PROGRAM driver USE AssociateAndAllocateDeluxe !**** TYPE(a_type) :: a ALLOCATE(a%a_comp(1)) CALL proc(a) END PROGRAM driver [/fortran]
[plain]>ifort /warn:all /check:all /standard-semantics AssociateAndAllocateDeluxe.f90 Intel Visual Fortran Compiler XE for applications running on IA-32, Version 12.0.1.127 Build 20101116 ...I'll just de-associate-statement the code.>AssociateAndAllocate.exe forrtl: severe (193): Run-Time Check Failure. The variable '_ASSOCIATEANDALLOCAT EDELUXE_mp_PROC$I' is being used without being defined Image PC Routine Line Source AssociateAndAlloc 0042E33A Unknown Unknown Unknown AssociateAndAlloc 0042B9D8 Unknown Unknown Unknown AssociateAndAlloc 0040498A Unknown Unknown Unknown AssociateAndAlloc 00405472 Unknown Unknown Unknown AssociateAndAlloc 004010AC Unknown Unknown Unknown AssociateAndAlloc 00401083 Unknown Unknown Unknown AssociateAndAlloc 0042EC83 Unknown Unknown Unknown AssociateAndAlloc 00419774 Unknown Unknown Unknown kernel32.dll 7C817077 Unknown Unknown Unknown[/plain]

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page