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 }