------- Comment #2 from rguenth at gcc dot gnu dot org 2008-06-30 09:51 ------- The problem is that the function x has the MALLOC flag. Why is this so? This causes the use of the argument memory to be missed.
I see in generic trans-decl.c code /* Get a basic decl for an external function. */ tree gfc_get_extern_function_decl (gfc_symbol * sym) { ... /* If the return type is a pointer, avoid alias issues by setting DECL_IS_MALLOC to nonzero. This means that the function should be treated as if it were a malloc, meaning it returns a pointer that is not an alias. */ if (POINTER_TYPE_P (type)) DECL_IS_MALLOC (fndecl) = 1; static void build_function_decl (gfc_symbol * sym) { ... /* If the return type is a pointer, avoid alias issues by setting DECL_IS_MALLOC to nonzero. This means that the function should be treated as if it were a malloc, meaning it returns a pointer that is not an alias. */ if (POINTER_TYPE_P (type)) DECL_IS_MALLOC (fndecl) = 1; I guess I'll have to re-organize the code to not ignore arguments to malloc functions. Anyway, the patch only uncovered this latent problem :( -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-06-30 09:51:50 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36671