This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/38868] [4.4 Regression] r143152 breaks output routines in xplor-nih
- From: "dominiq at lps dot ens dot fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Jan 2009 12:06:46 -0000
- Subject: [Bug middle-end/38868] [4.4 Regression] r143152 breaks output routines in xplor-nih
- References: <bug-38868-11113@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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 @@
<bb 2>:
_gfortran_set_options (8, &options.0);
+ aner[0] = "A ";
+ aner[1] = " ";
ivtmp.33 = 0;
<bb 3>:
@@ -27,8 +29,6 @@
goto <bb 3>;
<bb 4>:
- 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