http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56594



Tilo Schwarz <t...@tilo-schwarz.de> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |t...@tilo-schwarz.de



--- Comment #1 from Tilo Schwarz <t...@tilo-schwarz.de> 2013-03-17 19:56:11 UTC 
---

I think the problem is, that for the line 



a = a(2:2)



1st, a is realloced to length one and

2nd, a(2) is memmoved to a(1), but at that time a(2) is already invalid.



Using -fdump-tree-original:



On line 42 the realloc happens to length 1.

On line 50 the memmove happens from &(*a)[2], which is not valid anymore

because of the realloc on line 42.



 42         a = (character(kind=1)[1:.a] *) __builtin_realloc ((void *) a, 1);

 43         L.4:;

 44         .a = 1;

 45         D.1827 = .a;

 46         if (D.1827 != 0)

 47           {

 48             if ((character(kind=4)) D.1827 <= 1)

 49               {

 50                 __builtin_memmove ((void *) a, (void *) &(*a)[2]{lb: 1 sz:

1}, (character(kind=4)) D.1827);

 51               }

Reply via email to