From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7659 invoked by alias); 18 Jan 2009 12:06:56 -0000 Received: (qmail 7616 invoked by uid 48); 18 Jan 2009 12:06:46 -0000 Date: Sun, 18 Jan 2009 12:06:00 -0000 Message-ID: <20090118120646.7615.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/38868] [4.4 Regression] r143152 breaks output routines in xplor-nih In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "dominiq at lps dot ens dot fr" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-01/txt/msg01997.txt.bz2 ------- Comment #28 from dominiq at lps dot ens dot fr 2009-01-18 12:06 ------- The difference between the results of -fdump-tree-optimized for the cases aner = '' ANER(1)='A ' ANER(2)=' ' and ANER(1)='A ' ANER(2)=' ' aner = '' is ('pre' with the bug, 'rev' without it) --- pr38868_red_2.f90-pre 2009-01-18 12:42:15.000000000 +0100 +++ pr38868_red_2.f90-rev 2009-01-18 12:41:33.000000000 +0100 @@ -16,6 +16,8 @@ : _gfortran_set_options (8, &options.0); + aner[0] = "A "; + aner[1] = " "; ivtmp.33 = 0; : @@ -27,8 +29,6 @@ goto ; : - aner[0] = "A "; - aner[1] = " "; __builtin_memcpy (&line, &" "[1]{lb: 1 sz: 1}, 1); __builtin_memset (&line[2]{lb: 1 sz: 1}, 32, 79); __builtin_memcpy (&line[78]{lb: 1 sz: 1}, &"xyz"[1]{lb: 1 sz: 1}, 3); Can anyone see the difference between the two marked lines? The hexdump for the diff without -u is: 00000000 31 38 61 31 39 2c 32 30 0a 3e 20 20 20 61 6e 65 |18a19,20.> ane| 00000010 72 5b 30 5d 20 3d 20 22 41 20 20 20 22 3b 0a 3e |r[0] = "A ";.>| 00000020 20 20 20 61 6e 65 72 5b 31 5d 20 3d 20 22 20 20 | aner[1] = " | 00000030 20 20 22 3b 0a 33 30 2c 33 31 64 33 31 0a 3c 20 | ";.30,31d31.< | 00000040 20 20 61 6e 65 72 5b 30 5d 20 3d 20 22 41 20 20 | aner[0] = "A | 00000050 20 22 3b 0a 3c 20 20 20 61 6e 65 72 5b 31 5d 20 | ";.< aner[1] | 00000060 3d 20 22 20 20 20 20 22 3b 0a |= " ";.| The difference between the assembly is: --- pr38868_red_2.s-pre 2009-01-18 12:50:15.000000000 +0100 +++ pr38868_red_2.s-rev 2009-01-18 12:51:04.000000000 +0100 @@ -26,34 +26,34 @@ leal _options.0.1497-"L00000000001$pb"(%ebx), %eax movl %eax, 4(%esp) call L__gfortran_set_options$stub - xorl %eax, %eax + movl LC0-"L00000000001$pb"(%ebx), %eax leal -96(%ebp), %edx + movl %eax, -96(%ebp) + movl LC1-"L00000000001$pb"(%ebx), %eax + movl %eax, -92(%ebp) + xorl %eax, %eax .align 4,0x90 L2: movl $538976288, (%edx,%eax,4) addl $1, %eax cmpl $18, %eax jne L2 - movl LC0-"L00000000001$pb"(%ebx), %eax leal -172(%ebp), %edi - movl $19, %ecx - leal -176(%ebp), %esi - movb $32, -176(%ebp) - movb $32, -175(%ebp) - movl %eax, -96(%ebp) - movl LC1-"L00000000001$pb"(%ebx), %eax - movw $8224, -174(%ebp) - movw $31096, -99(%ebp) - movb $122, -97(%ebp) - movl %eax, -92(%ebp) movl $538976288, %eax + movl $19, %ecx rep stosl leal LC2-"L00000000001$pb"(%ebx), %eax leal -680(%ebp), %edi movl %eax, -672(%ebp) leal LC3-"L00000000001$pb"(%ebx), %eax + leal -176(%ebp), %esi movl %eax, -632(%ebp) movl %edi, (%esp) + movb $32, -176(%ebp) + movb $32, -175(%ebp) + movw $8224, -174(%ebp) + movw $31096, -99(%ebp) + movb $122, -97(%ebp) movl $11, -668(%ebp) movl $5, -628(%ebp) movl $4096, -680(%ebp) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38868