http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54597
--- Comment #4 from Li Dong <dongli at lasg dot iap.ac.cn> 2012-09-16 12:58:03 UTC --- (In reply to comment #3) > But back to your test case: > > function foo() > character(*), allocatable :: foo > > The "*" is invalid in this context; it means that the length is assumed - but > there is nothing from where it can be assumed. You have to use ":" (deferred > length) instead of "*". Sorry, you are right! I have typed the wrong code, it should be "deferred-length allocatable character" as following: function foo() character(:), allocatable :: foo I have post in Intel Fortran forum as http://software.intel.com/en-us/forums/topic/326820.