This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/38868] [4.4 Regression] r143152 breaks output routines in xplor-nih



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]