public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/29391]  New: LBOUND(TRANSPOSE(I)) doesn't work
@ 2006-10-08 20:55 fxcoudert at gcc dot gnu dot org
  2006-10-08 21:09 ` [Bug fortran/29391] " fxcoudert at gcc dot gnu dot org
                   ` (21 more replies)
  0 siblings, 22 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-08 20:55 UTC (permalink / raw)
  To: gcc-bugs

I'm surprised this was not reported before, but can't find it in bugzilla.

$ cat a6.f90                   
INTEGER :: I(-1:1,-1:1)=0 
WRITE(6,*) LBOUND(TRANSPOSE(I)) 
END 

$ ifort a6.f90 && ./a.out
           1           1
$ gfortran a6.f90 && ./a.out
          -1          -1


-- 
           Summary: LBOUND(TRANSPOSE(I)) doesn't work
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: fxcoudert at gcc dot gnu dot org


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
@ 2006-10-08 21:09 ` fxcoudert at gcc dot gnu dot org
  2006-10-09 11:39 ` fxcoudert at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-08 21:09 UTC (permalink / raw)
  To: gcc-bugs



-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-10-08 21:09:14
               date|                            |


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
  2006-10-08 21:09 ` [Bug fortran/29391] " fxcoudert at gcc dot gnu dot org
@ 2006-10-09 11:39 ` fxcoudert at gcc dot gnu dot org
  2006-10-10  7:31 ` fxcoudert at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-09 11:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from fxcoudert at gcc dot gnu dot org  2006-10-09 11:39 -------
The same thing is true for all the array manipulation functions:

  integer :: i(-1:1,-1:1) = 0
  integer :: j(-1:2) = 0

  ! This is working correctly
  write(*,*) lbound(i(-1:1,-1:1)), ubound(i(-1:1,-1:1))
  write(*,*) lbound(i(:,:)), ubound(i(:,:))
  write(*,*) lbound(i(0:,-1:)), ubound(i(0:,-1:))
  write(*,*) lbound(i(:0,:1)), ubound(i(:0,:1))

  ! None of the following is working
  write(*,*) lbound(transpose(i)), ubound(transpose(i))
  write(*,*) lbound(reshape(i,(/2,2/))), ubound(reshape(i,(/2,2/)))
  write(*,*) lbound(cshift(i,-1)), ubound(cshift(i,-1))
  write(*,*) lbound(eoshift(i,-1)), ubound(eoshift(i,-1))
  write(*,*) lbound(spread(i,1,2)), ubound(spread(i,1,2))
  write(*,*) lbound(maxloc(i)), ubound(maxloc(i))
  write(*,*) lbound(minloc(i)), ubound(minloc(i))
  write(*,*) lbound(maxval(i,2)), ubound(maxval(i,2))
  write(*,*) lbound(minval(i,2)), ubound(minval(i,2))
  write(*,*) lbound(product(i,2)), ubound(product(i,2))
  write(*,*) lbound(sum(i,2)), ubound(sum(i,2))
  write(*,*) lbound(any(i==1,2)), ubound(any(i==1,2))
  write(*,*) lbound(count(i==1,2)), ubound(count(i==1,2))
  write(*,*) lbound(matmul(i,i)), ubound(matmul(i,i))
  write(*,*) lbound(lbound(i)), ubound(lbound(i))
  write(*,*) lbound(ubound(i)), ubound(ubound(i))
  write(*,*) lbound(shape(i)), ubound(shape(i))
  write(*,*) lbound(pack(i,.true.)), ubound(pack(i,.true.))
  write(*,*) lbound(unpack(j,(/.true./),(/2/))), &
             ubound(unpack(j,(/.true./),(/2/))) 
  write(*,*) lbound(merge(i,i,.true.)), ubound(merge(i,i,.true.))

end


The results for all write statements below the second comment are off.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
  2006-10-08 21:09 ` [Bug fortran/29391] " fxcoudert at gcc dot gnu dot org
  2006-10-09 11:39 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-10  7:31 ` fxcoudert at gcc dot gnu dot org
  2006-10-10 19:36 ` pault at gcc dot gnu dot org
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-10  7:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from fxcoudert at gcc dot gnu dot org  2006-10-10 07:31 -------
For the TRANSPOSE case, the generated code shows that the {u,l}bounds simply
aren't set right:

$ cat pr29391.f90
  integer :: i(-1:1,-1:1)=0, j(2)
  j = lbound(transpose(i)) 
end
$ cat pr29391.f90.003t.original 
MAIN__ ()
{
  int4 j[2];
  static int4 i[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};

  _gfortran_set_std (70, 127, 0);
  {
    int8 S.0;

    S.0 = 1;
    while (1)
      {
        if (S.0 > 2) goto L.1; else (void) 0;
        {
          struct array2_int4 atmp.2;
          struct array2_int4 parm.1;

          parm.1.dtype = 266;
          parm.1.dim[0].lbound = -1;
          parm.1.dim[0].ubound = 1;
          parm.1.dim[0].stride = 1;
          parm.1.dim[1].lbound = -1;
          parm.1.dim[1].ubound = 1;
          parm.1.dim[1].stride = 3;
          parm.1.data = (void *) &i[0];
          parm.1.offset = 0;
          atmp.2.dtype = parm.1.dtype;
          atmp.2.dim[0].stride = parm.1.dim[1].stride;
          atmp.2.dim[0].lbound = parm.1.dim[1].lbound;
          atmp.2.dim[0].ubound = parm.1.dim[1].ubound;
          atmp.2.dim[1].stride = parm.1.dim[0].stride;
          atmp.2.dim[1].lbound = parm.1.dim[0].lbound;
          atmp.2.dim[1].ubound = parm.1.dim[0].ubound;
          atmp.2.data = parm.1.data;
          atmp.2.offset = parm.1.offset;
          j[NON_LVALUE_EXPR <S.0> + -1] = (int4) atmp.2.dim[S.0 - 1].lbound;
        }
        S.0 = S.0 + 1;
      }
    L.1:;
  }
}

The following patch ought to fix it:

Index: gcc/fortran/trans-array.c
===================================================================
--- gcc/fortran/trans-array.c   (revision 117560)
+++ gcc/fortran/trans-array.c   (working copy)
@@ -787,11 +787,17 @@

       gfc_add_modify_expr (&se->pre,
                           gfc_conv_descriptor_lbound (dest, dest_index),
-                          gfc_conv_descriptor_lbound (src, src_index));
+                          gfc_index_one_node);

       gfc_add_modify_expr (&se->pre,
                           gfc_conv_descriptor_ubound (dest, dest_index),
-                          gfc_conv_descriptor_ubound (src, src_index));
+                          build2 (PLUS_EXPR, gfc_array_index_type,
+                                  gfc_index_one_node,
+                                  build2 (MINUS_EXPR, gfc_array_index_type,
+                                          gfc_conv_descriptor_ubound
+                                            (src, src_index),
+                                          gfc_conv_descriptor_lbound
+                                            (src, src_index))));

       if (!loop->to[n])
         {


One last comment: I'm not sure the stride shouldn't be set to one. The patch
above regtests fine, and can compile correctly everything I threw at it, but
maybe I have not been clever enough to think of something that would trigger a
check on the stride.

Paul, could I have your opinion on the patch and the stride question? After you
comment, I'll go on designing patches for the other functions.


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |paulthomas2 at wanadoo dot
                   |                            |fr
      Known to fail|                            |4.2.0 4.1.2


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2006-10-10  7:31 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-10 19:36 ` pault at gcc dot gnu dot org
  2006-10-10 22:04 ` fxcoudert at gcc dot gnu dot org
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-10-10 19:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pault at gcc dot gnu dot org  2006-10-10 19:36 -------
(In reply to comment #2)

> One last comment: I'm not sure the stride shouldn't be set to one. The patch
> above regtests fine, and can compile correctly everything I threw at it, but
> maybe I have not been clever enough to think of something that would trigger a
> check on the stride.

Sorry, which stride?  The inversion of the strides is what allows MATMUL to do
neat thing with a*.b - I think that it's a horrible kludge but there we are. It
is more efficient and I nearly bust myself getting MATMUL right!  
> 
> Paul, could I have your opinion on the patch and the stride question? After you
> comment, I'll go on designing patches for the other functions.

Don't nest the build2's like that - use a temporary; you might find that
fold_build2 gives a better account of itself for index calculations; cf the
discussion on the list about the loop reverser for the scalarizer.

Ar you sure that this renormalization of the bounds is required? After all:
(i) indices should always be realtive to lbound, whatever it is; and
(ii) why would anybody be interested to do this?  After all, the temporary
could be assigned to a variable with any lbound at all.

Paul 


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2006-10-10 19:36 ` pault at gcc dot gnu dot org
@ 2006-10-10 22:04 ` fxcoudert at gcc dot gnu dot org
  2006-10-11  6:11 ` paulthomas2 at wanadoo dot fr
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-10 22:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from fxcoudert at gcc dot gnu dot org  2006-10-10 22:04 -------
(In reply to comment #3)
> Are you sure that this renormalization of the bounds is required? After all:
> (i) indices should always be realtive to lbound, whatever it is; and
> (ii) why would anybody be interested to do this?  After all, the temporary
> could be assigned to a variable with any lbound at all.

I'm not sure I understand. The following code:
  INTEGER :: I(-1:1,-1:1)=0
  WRITE(6,*) LBOUND(I)
  WRITE(6,*) LBOUND(I(:,:))
  WRITE(6,*) LBOUND(TRANSPOSE(I))
  END
ought to output
  -1 -1
  1 1
  1 1
and not like we currently do:
  -1 -1
  1 1
  -1 -1

That's because of F95 13.14.53:

Case (i): For an array section or for an array expression other than a whole
array or array structure component, LBOUND(ARRAY, DIM) has the value 1.  For a
whole array or array structure component, LBOUND(ARRAY, DIM) has the value:
    (a) equal to the lower bound for subscript DIM of ARRAY if dimension DIM of
ARRAY does not have extent zero or if ARRAY is an assumed-size array of rank
DIM, or 
    (b) 1 otherwise.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2006-10-10 22:04 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-11  6:11 ` paulthomas2 at wanadoo dot fr
  2006-10-11  7:27 ` fxcoudert at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: paulthomas2 at wanadoo dot fr @ 2006-10-11  6:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from paulthomas2 at wanadoo dot fr  2006-10-11 06:11 -------
Subject: Re:  LBOUND(TRANSPOSE(I)) doesn't work

FX,

>
>That's because of F95 13.14.53:
>
>Case (i): For an array section or for an array expression other than a whole
>array or array structure component, LBOUND(ARRAY, DIM) has the value 1.  For a
>whole array or array structure component, LBOUND(ARRAY, DIM) has the value:
>    (a) equal to the lower bound for subscript DIM of ARRAY if dimension DIM of
>ARRAY does not have extent zero or if ARRAY is an assumed-size array of rank
>DIM, or 
>    (b) 1 otherwise.
>
>
>  
>
That's what I was asking.  OK, we have a problem with allocatable 
components too.

Cheers

Paul


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2006-10-11  6:11 ` paulthomas2 at wanadoo dot fr
@ 2006-10-11  7:27 ` fxcoudert at gcc dot gnu dot org
  2006-10-11  7:32 ` fxcoudert at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-11  7:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from fxcoudert at gcc dot gnu dot org  2006-10-11 07:26 -------
With the following patch:

Index: trans-array.c
===================================================================
--- trans-array.c       (revision 117560)
+++ trans-array.c       (working copy)
@@ -661,10 +661,12 @@
       gfc_add_modify_expr (pre, tmp, size);

       tmp = gfc_conv_descriptor_lbound (desc, gfc_rank_cst[n]);
-      gfc_add_modify_expr (pre, tmp, gfc_index_zero_node);
+      gfc_add_modify_expr (pre, tmp, gfc_index_one_node);

       tmp = gfc_conv_descriptor_ubound (desc, gfc_rank_cst[n]);
-      gfc_add_modify_expr (pre, tmp, loop->to[n]);
+      gfc_add_modify_expr (pre, tmp,
+                          fold_build2 (PLUS_EXPR, gfc_array_index_type,
+                                       loop->to[n], gfc_index_one_node));

       tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
                         loop->to[n], gfc_index_one_node);
@@ -787,11 +789,17 @@

       gfc_add_modify_expr (&se->pre,
                           gfc_conv_descriptor_lbound (dest, dest_index),
-                          gfc_conv_descriptor_lbound (src, src_index));
+                          gfc_index_one_node);

       gfc_add_modify_expr (&se->pre,
                           gfc_conv_descriptor_ubound (dest, dest_index),
-                          gfc_conv_descriptor_ubound (src, src_index));
+                          fold_build2 (PLUS_EXPR, gfc_array_index_type,
+                               gfc_index_one_node,
+                               fold_build2 (MINUS_EXPR, gfc_array_index_type,
+                                            gfc_conv_descriptor_ubound
+                                              (src, src_index),
+                                            gfc_conv_descriptor_lbound
+                                              (src, src_index))));

       if (!loop->to[n])
         {

I get all intrinsics that work through temporaries working right:
  integer :: i(-1:1,-1:1) = 0
  integer :: j(-1:2) = 0

  ! Was already working
  write(*,*) lbound(i(-1:1,-1:1)), ubound(i(-1:1,-1:1))
  write(*,*) lbound(i(:,:)), ubound(i(:,:))
  write(*,*) lbound(i(0:,-1:)), ubound(i(0:,-1:))
  write(*,*) lbound(i(:0,:1)), ubound(i(:0,:1))

  ! Fixed
  write(*,*) lbound(transpose(i)), ubound(transpose(i))
  write(*,*) lbound(reshape(i,(/2,2/))), ubound(reshape(i,(/2,2/)))
  write(*,*) lbound(cshift(i,-1)), ubound(cshift(i,-1))
  write(*,*) lbound(eoshift(i,-1)), ubound(eoshift(i,-1))
  write(*,*) lbound(spread(i,1,2)), ubound(spread(i,1,2))
  write(*,*) lbound(maxloc(i)), ubound(maxloc(i))
  write(*,*) lbound(minloc(i)), ubound(minloc(i))
  write(*,*) lbound(maxval(i,2)), ubound(maxval(i,2))
  write(*,*) lbound(minval(i,2)), ubound(minval(i,2))
  write(*,*) lbound(any(i==1,2)), ubound(any(i==1,2))
  write(*,*) lbound(count(i==1,2)), ubound(count(i==1,2))
  write(*,*) lbound(merge(i,i,.true.)), ubound(merge(i,i,.true.))
  write(*,*) lbound(lbound(i)), ubound(lbound(i))
  write(*,*) lbound(ubound(i)), ubound(ubound(i))
  write(*,*) lbound(shape(i)), ubound(shape(i))

  ! Still not working
  write(*,*) lbound(product(i,2)), ubound(product(i,2))
  write(*,*) lbound(sum(i,2)), ubound(sum(i,2))
  write(*,*) lbound(matmul(i,i)), ubound(matmul(i,i))
  write(*,*) lbound(pack(i,.true.)), ubound(pack(i,.true.))
  write(*,*) lbound(unpack(j,(/.true./),(/2/))), &
             ubound(unpack(j,(/.true./),(/2/))) 

end


So I only have PRODUCT, SUM, MATMUL, PACK and UNPACK to work on.


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (6 preceding siblings ...)
  2006-10-11  7:27 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-11  7:32 ` fxcoudert at gcc dot gnu dot org
  2006-10-11  8:02 ` paulthomas2 at wanadoo dot fr
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-11  7:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from fxcoudert at gcc dot gnu dot org  2006-10-11 07:32 -------
(In reply to comment #6)
Forget that patch, it's breaking lots of things :(


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (7 preceding siblings ...)
  2006-10-11  7:32 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-11  8:02 ` paulthomas2 at wanadoo dot fr
  2006-10-12 11:16 ` fxcoudert at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: paulthomas2 at wanadoo dot fr @ 2006-10-11  8:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from paulthomas2 at wanadoo dot fr  2006-10-11 08:02 -------
Subject: Re:  LBOUND(TRANSPOSE(I)) doesn't work

FX,

>I get all intrinsics that work through temporaries working right:
>
>  
>
Great!

>So I only have PRODUCT, SUM, MATMUL, PACK and UNPACK to work on.
>
>
>  
>
I wonder if doing the same in trans-intrinsic.c 
(gfc_conv_intrinsic_function) might not be the magic bullet?  You could 
write a little function to normalise the bounds of se->expr, putting the 
code in the se->post, and call it from lines 3198 and 3589.

You had better check the performance hit, if any, that results from 
touching gfc_trans_create_temp_array - run the Polyhedron suite, for 
example, with and without the patch.

Paul


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (8 preceding siblings ...)
  2006-10-11  8:02 ` paulthomas2 at wanadoo dot fr
@ 2006-10-12 11:16 ` fxcoudert at gcc dot gnu dot org
  2006-10-12 13:15 ` fxcoudert at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-12 11:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from fxcoudert at gcc dot gnu dot org  2006-10-12 11:15 -------
Created an attachment (id=12416)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12416&action=view)
Patch for LBOUND/UBOUND

This patch fixes this bug completely. It builds fine, regtest and works fine
with a few other extra examples that I'll add as testcases.

The idea behind it is explained here:
http://gcc.gnu.org/ml/fortran/2006-10/msg00379.html


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |fxcoudert at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (9 preceding siblings ...)
  2006-10-12 11:16 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-12 13:15 ` fxcoudert at gcc dot gnu dot org
  2006-10-12 15:57 ` paulthomas2 at wanadoo dot fr
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-12 13:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from fxcoudert at gcc dot gnu dot org  2006-10-12 13:15 -------
Created an attachment (id=12417)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12417&action=view)
New patch

This updated patch is the result of re-reading the Standard about assumed-size
arrays.


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #12416|0                           |1
        is obsolete|                            |


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (10 preceding siblings ...)
  2006-10-12 13:15 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-12 15:57 ` paulthomas2 at wanadoo dot fr
  2006-10-13 12:20 ` fxcoudert at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: paulthomas2 at wanadoo dot fr @ 2006-10-12 15:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from paulthomas2 at wanadoo dot fr  2006-10-12 15:57 -------
Subject: Re:  LBOUND(TRANSPOSE(I)) doesn't work

FX

!       if (upper)
!     {
!       cond1 = fold_build2 (GE_EXPR, boolean_type_node, ubound, lbound);
!       cond2 = fold_build2 (LE_EXPR, boolean_type_node, ubound, lbound);
!       cond3 = fold_build2 (GT_EXPR, boolean_type_node, stride,
!                    gfc_index_zero_node);
!
!       cond = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond3, 
cond1);
!       cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond, cond2);
!
!       se->expr = fold_build3 (COND_EXPR, gfc_array_index_type, cond,
!                   ubound, gfc_index_zero_node);
!     }
!       else
!     {
!       tree cond1, cond2, cond3;

Repeated declaration

!
!       if (as->type == AS_ASSUMED_SIZE)
!         cond = fold_build2 (EQ_EXPR, boolean_type_node, bound,
!                 build_int_cst (TREE_TYPE (bound),
!                            arg->expr->rank));
!       else
!         cond = boolean_false_node;
!
!       cond1 = fold_build2 (GE_EXPR, boolean_type_node, ubound, lbound);
!       cond2 = fold_build2 (LE_EXPR, boolean_type_node, ubound, lbound);
!       cond3 = fold_build2 (GT_EXPR, boolean_type_node, stride,
!                    gfc_index_zero_node);

Same assignment for upper and lower - put it before the if

!       cond1 = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond3, 
cond1);
!       cond1 = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond1, 
cond2);
!
!       cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond, cond1);
!
!       se->expr = fold_build3 (COND_EXPR, gfc_array_index_type, cond,
!                   lbound, gfc_index_one_node);
!     }

I have tested the above corrections, verified the logic and regtested 
the patch right now.  My version of the diff is attached.  I added a 
comment that consists of the appropriate extracts from the standard.

gfortran and ifort now agree on the testcase in #1, whilst g95 differs 
on the last line.

With an appropriate testcase and ChangeLog entries, this is OK for trunk.

Paul


Index: gcc/fortran/trans-intrinsic.c
===================================================================
*** gcc/fortran/trans-intrinsic.c       (revision 117628)
--- gcc/fortran/trans-intrinsic.c       (working copy)
*************** gfc_conv_intrinsic_bound (gfc_se * se, g
*** 710,718 ****
    tree type;
    tree bound;
    tree tmp;
!   tree cond;
    gfc_se argse;
    gfc_ss *ss;
    int i;

    arg = expr->value.function.actual;
--- 710,722 ----
    tree type;
    tree bound;
    tree tmp;
!   tree cond, cond1, cond2, cond3, size;
!   tree ubound;
!   tree lbound;
    gfc_se argse;
    gfc_ss *ss;
+   gfc_array_spec * as;
+   gfc_ref *ref;
    int i;

    arg = expr->value.function.actual;
*************** gfc_conv_intrinsic_bound (gfc_se * se, g
*** 773,782 ****
          }
      }

!   if (upper)
!     se->expr = gfc_conv_descriptor_ubound(desc, bound);
    else
!     se->expr = gfc_conv_descriptor_lbound(desc, bound);

    type = gfc_typenode_for_spec (&expr->ts);
    se->expr = convert (type, se->expr);
--- 777,883 ----
          }
      }

!   ubound = gfc_conv_descriptor_ubound (desc, bound);
!   lbound = gfc_conv_descriptor_lbound (desc, bound);
!   
!   /* Follow any component references.  */
!   if (arg->expr->expr_type == EXPR_VARIABLE
!       || arg->expr->expr_type == EXPR_CONSTANT)
!     {
!       as = arg->expr->symtree->n.sym->as;
!       for (ref = arg->expr->ref; ref; ref = ref->next)
!       {
!         switch (ref->type)
!           {
!           case REF_COMPONENT:
!             as = ref->u.c.component->as;
!             continue;
! 
!           case REF_SUBSTRING:
!             continue;
! 
!           case REF_ARRAY:
!             {
!               switch (ref->u.ar.type)
!                 {
!                 case AR_ELEMENT:
!                 case AR_SECTION:
!                 case AR_UNKNOWN:
!                   as = NULL;
!                   continue;
! 
!                 case AR_FULL:
!                   break;
!                 }
!             }
!           }
!       }
!     }
!   else
!     as = NULL;
! 
!   /* 13.14.53: Result value for LBOUND
!      Case (i): For an array section or for an array expression other than a
whole
!      array or array structure component, LBOUND(ARRAY, DIM) has the value 1. 
For a
!      whole array or array structure component, LBOUND(ARRAY, DIM) has the
value:
!      (a) equal to the lower bound for subscript DIM of ARRAY if dimension DIM
of
!      does not have extent zero or if ARRAY is an assumed-size array of rank
!      DIM, or 
!      (b) 1 otherwise......
! 
!      13.14.113: Result value for UBOUND
!      Case (i): For an array section or for an array expression other than a
whole
!      array or array structure component, UBOUND(ARRAY, DIM) has the value
equal 
!      to the number of elements in the given dimension; otherwise, it has a
value
!      equal to the upper bound for subscript DIM of ARRAY if dimension DIM of
!      ARRAY does not have size zero and has value zero if dimension DIM has
size
!      zero.  */
! 
!   if (as)
!     {
!       tree stride = gfc_conv_descriptor_stride (desc, bound);
!       cond1 = fold_build2 (GE_EXPR, boolean_type_node, ubound, lbound);
!       cond2 = fold_build2 (LE_EXPR, boolean_type_node, ubound, lbound);
!       cond3 = fold_build2 (GT_EXPR, boolean_type_node, stride,
!                          gfc_index_zero_node);
! 
!       if (upper)
!       {
!         cond = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond3, cond1);
!         cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond, cond2);
! 
!         se->expr = fold_build3 (COND_EXPR, gfc_array_index_type, cond,
!                                 ubound, gfc_index_zero_node);
!       }
!       else
!       {
!         if (as->type == AS_ASSUMED_SIZE)
!           cond = fold_build2 (EQ_EXPR, boolean_type_node, bound,
!                               build_int_cst (TREE_TYPE (bound),
!                                              arg->expr->rank));
!         else
!           cond = boolean_false_node;
! 
!         cond1 = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, cond3,
cond1);
!         cond1 = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond1, cond2);
! 
!         cond = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, cond, cond1);
! 
!         se->expr = fold_build3 (COND_EXPR, gfc_array_index_type, cond,
!                                 lbound, gfc_index_one_node);
!       }
!     }
    else
!     {
!       if (upper)
!         {
!         size = fold_build2 (MINUS_EXPR, gfc_array_index_type, ubound,
lbound);
!         se->expr = fold_build2 (PLUS_EXPR, gfc_array_index_type, size,
!                                 gfc_index_one_node);
!       }
!       else
!       se->expr = gfc_index_one_node;
!     }

    type = gfc_typenode_for_spec (&expr->ts);
    se->expr = convert (type, se->expr);


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND(TRANSPOSE(I)) doesn't work
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (11 preceding siblings ...)
  2006-10-12 15:57 ` paulthomas2 at wanadoo dot fr
@ 2006-10-13 12:20 ` fxcoudert at gcc dot gnu dot org
  2006-10-13 12:24 ` [Bug fortran/29391] [4.1 only] LBOUND and UBOUND are broken fxcoudert at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-13 12:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from fxcoudert at gcc dot gnu dot org  2006-10-13 12:20 -------
Subject: Bug 29391

Author: fxcoudert
Date: Fri Oct 13 12:20:28 2006
New Revision: 117691

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117691
Log:
        PR fortran/29391

        * trans-intrinsic.c (gfc_conv_intrinsic_bound): Generate correct
        code for LBOUND and UBOUND intrinsics.

        * gfortran.dg/bound_2.f90: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/bound_2.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-intrinsic.c
    trunk/gcc/testsuite/ChangeLog


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (12 preceding siblings ...)
  2006-10-13 12:20 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-13 12:24 ` fxcoudert at gcc dot gnu dot org
  2006-10-17 10:45 ` fxcoudert at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-13 12:24 UTC (permalink / raw)
  To: gcc-bugs



-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
      Known to fail|4.2.0 4.1.2                 |4.1.2
      Known to work|                            |4.2.0
            Summary|LBOUND(TRANSPOSE(I)) doesn't|[4.1 only] LBOUND and UBOUND
                   |work                        |are broken
   Target Milestone|---                         |4.1.2


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (13 preceding siblings ...)
  2006-10-13 12:24 ` [Bug fortran/29391] [4.1 only] LBOUND and UBOUND are broken fxcoudert at gcc dot gnu dot org
@ 2006-10-17 10:45 ` fxcoudert at gcc dot gnu dot org
  2006-10-22  4:47 ` [Bug fortran/29391] " pault at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-10-17 10:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from fxcoudert at gcc dot gnu dot org  2006-10-17 10:45 -------
LBOUND and UBOUND also need to be fixed in simplify.c:

program fred

  call jackal (3, 2)

contains

  subroutine jackal (b, c)
    integer :: b, c
    integer :: soda(b:c, 1:2)

    print *, "SIZE = ", size(soda)
    print *, "LBOUND (soda, DIM) = ", ubound (soda, 1), ubound(soda, 2)
    print *, "LBOUND (soda)      = ", ubound (soda)

  end subroutine jackal
end

gives:

 SIZE =            0
 LBOUND (soda, DIM) =            2           2
 LBOUND (soda)      =            2           0

(from PR29489)


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|4.1.2                       |4.1.2 4.2.0
      Known to work|4.2.0                       |


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (14 preceding siblings ...)
  2006-10-17 10:45 ` fxcoudert at gcc dot gnu dot org
@ 2006-10-22  4:47 ` pault at gcc dot gnu dot org
  2006-11-16 12:25 ` fxcoudert at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-10-22  4:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from pault at gcc dot gnu dot org  2006-10-22 04:47 -------
> (from PR29489)
> 
Thanks FX, I forgot all about it.

Paul


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (15 preceding siblings ...)
  2006-10-22  4:47 ` [Bug fortran/29391] " pault at gcc dot gnu dot org
@ 2006-11-16 12:25 ` fxcoudert at gcc dot gnu dot org
  2006-11-16 23:56 ` [Bug fortran/29391] [4.2/4.1 only] " fxcoudert at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-11-16 12:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from fxcoudert at gcc dot gnu dot org  2006-11-16 12:25 -------
Subject: Bug 29391

Author: fxcoudert
Date: Thu Nov 16 12:25:11 2006
New Revision: 118888

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=118888
Log:
        PR fortran/29391
        PR fortran/29489

        * simplify.c (simplify_bound): Fix the simplification of
        LBOUND/UBOUND intrinsics.
        * trans-intrinsic.c (simplify_bound): Fix the logic, and
        remove an erroneous assert.

        * gcc/testsuite/gfortran.dg/bound_2.f90: Add more checks.
        * gcc/testsuite/gfortran.dg/bound_3.f90: New test.

Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/simplify.c
    trunk/gcc/fortran/trans-intrinsic.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/bound_2.f90


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.2/4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (16 preceding siblings ...)
  2006-11-16 12:25 ` fxcoudert at gcc dot gnu dot org
@ 2006-11-16 23:56 ` fxcoudert at gcc dot gnu dot org
  2006-11-24 22:26 ` fxcoudert at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-11-16 23:56 UTC (permalink / raw)
  To: gcc-bugs



-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.2                       |4.1.3


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.2/4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (17 preceding siblings ...)
  2006-11-16 23:56 ` [Bug fortran/29391] [4.2/4.1 only] " fxcoudert at gcc dot gnu dot org
@ 2006-11-24 22:26 ` fxcoudert at gcc dot gnu dot org
  2006-11-24 22:45 ` fxcoudert at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-11-24 22:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from fxcoudert at gcc dot gnu dot org  2006-11-24 22:25 -------
Subject: Bug 29391

Author: fxcoudert
Date: Fri Nov 24 22:25:34 2006
New Revision: 119174

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119174
Log:
        PR fortran/29391
        PR fortran/29489
        * simplify.c (simplify_bound): Fix the simplification of
        LBOUND/UBOUND intrinsics.
        * trans-intrinsic.c (simplify_bound): Fix the logic, and
        remove an erroneous assert.
        * gfortran.dg/bound_2.f90: New test.
        * gfortran.dg/bound_3.f90: New test.

        PR fortran/24285
        * io.c (check_format): Allow dollars everywhere in format, and
        issue a warning.
        * gfortran.dg/dollar_edit_descriptor-3.f: New test.

Added:
   
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/dollar_edit_descriptor-3.f
      - copied unchanged from r118971,
trunk/gcc/testsuite/gfortran.dg/dollar_edit_descriptor-3.f
Modified:
    branches/gcc-4_2-branch/gcc/fortran/ChangeLog
    branches/gcc-4_2-branch/gcc/fortran/io.c
    branches/gcc-4_2-branch/gcc/fortran/simplify.c
    branches/gcc-4_2-branch/gcc/fortran/trans-intrinsic.c
    branches/gcc-4_2-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/bound_2.f90


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.2/4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (18 preceding siblings ...)
  2006-11-24 22:26 ` fxcoudert at gcc dot gnu dot org
@ 2006-11-24 22:45 ` fxcoudert at gcc dot gnu dot org
  2006-11-24 22:46 ` fxcoudert at gcc dot gnu dot org
  2006-12-01  2:04 ` chaoyingfu at gcc dot gnu dot org
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-11-24 22:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from fxcoudert at gcc dot gnu dot org  2006-11-24 22:45 -------
Subject: Bug 29391

Author: fxcoudert
Date: Fri Nov 24 22:45:21 2006
New Revision: 119175

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119175
Log:
        PR fortran/29391
        PR fortran/29489
        * simplify.c (simplify_bound): Fix the simplification of
        LBOUND/UBOUND intrinsics.
        * trans-intrinsic.c (simplify_bound): Fix the logic, and
        remove an erroneous assert.

        PR fortran/29391
        * trans-intrinsic.c (gfc_conv_intrinsic_bound): Generate correct
        code for LBOUND and UBOUND intrinsics.

        PR fortran/29391
        PR fortran/29489
        * gfortran.dg/bound_2.f90: New test.
        * gfortran.dg/bound_3.f90: New test.

Added:
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/bound_2.f90
      - copied, changed from r117691,
trunk/gcc/testsuite/gfortran.dg/bound_2.f90
Modified:
    branches/gcc-4_1-branch/gcc/fortran/ChangeLog
    branches/gcc-4_1-branch/gcc/fortran/simplify.c
    branches/gcc-4_1-branch/gcc/fortran/trans-intrinsic.c
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.2/4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (19 preceding siblings ...)
  2006-11-24 22:45 ` fxcoudert at gcc dot gnu dot org
@ 2006-11-24 22:46 ` fxcoudert at gcc dot gnu dot org
  2006-12-01  2:04 ` chaoyingfu at gcc dot gnu dot org
  21 siblings, 0 replies; 23+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-11-24 22:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from fxcoudert at gcc dot gnu dot org  2006-11-24 22:46 -------
Fixed.


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug fortran/29391] [4.2/4.1 only] LBOUND and UBOUND are broken
  2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
                   ` (20 preceding siblings ...)
  2006-11-24 22:46 ` fxcoudert at gcc dot gnu dot org
@ 2006-12-01  2:04 ` chaoyingfu at gcc dot gnu dot org
  21 siblings, 0 replies; 23+ messages in thread
From: chaoyingfu at gcc dot gnu dot org @ 2006-12-01  2:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from chaoyingfu at gcc dot gnu dot org  2006-12-01 02:00 -------
Subject: Bug 29391

Author: chaoyingfu
Date: Fri Dec  1 01:57:22 2006
New Revision: 119394

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119394
Log:
Merged revisions 118791-118987 via svnmerge from 
svn+ssh://chaoyingfu@sources.redhat.com/svn/gcc/trunk

........
  r118791 | gccadmin | 2006-11-13 16:17:39 -0800 (Mon, 13 Nov 2006) | 1 line

  Daily bump.
........
  r118793 | jiez | 2006-11-13 16:39:08 -0800 (Mon, 13 Nov 2006) | 4 lines

        * configure.in: Remove target-libgloss from noconfigdirs for
        bfin-*-*.
        * configure: Regenerated.
........
  r118794 | jiez | 2006-11-13 16:45:33 -0800 (Mon, 13 Nov 2006) | 4 lines

        * configure.in: Remove target-libgloss from noconfigdirs for
        bfin-*-*.
        * configure: Regenerated.
........
  r118798 | dj | 2006-11-13 18:29:46 -0800 (Mon, 13 Nov 2006) | 3 lines

  * config/m32c/m32c.c (m32c_prepare_shift): Use a separate
  temporary for intermediates.
........
  r118802 | ghazi | 2006-11-13 21:08:46 -0800 (Mon, 13 Nov 2006) | 7 lines

        * fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
        COND_EXPR.

  testsuite:
        * gcc.dg/builtins-20.c: Add more cases.
........
  r118808 | bonzini | 2006-11-14 00:46:26 -0800 (Tue, 14 Nov 2006) | 16 lines

  2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

        PR rtl-optimization/29798

        * fwprop.c (use_killed_between): Check that DEF_INSN dominates
        TARGET_INSN before any other check.
        (fwprop_init): Always calculate dominators.
        (fwprop_done): Always free them.

  2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

        PR rtl-optimization/29798

        * gcc.c-torture/execute/pr29798.c: New.
........
  r118810 | bonzini | 2006-11-14 04:14:33 -0800 (Tue, 14 Nov 2006) | 7 lines

  2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

        * Makefile.tpl (clean-stage*): Test separately for package/Makefile
        and stageN-package/Makefile.
        * Makefile.in: Regenerated.
........
  r118812 | burnus | 2006-11-14 07:35:36 -0800 (Tue, 14 Nov 2006) | 13 lines

  fortran/
  2006-11-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/29657
        * symbol.c (check_conflict): Add further conflicts.

  testsuite/
  2006-11-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/29657
        * gfortran.dg/conflicts.f90: Add.
........
  r118813 | erven | 2006-11-14 07:45:55 -0800 (Tue, 14 Nov 2006) | 1 line

   MAINTAINERS (Write After Approval): Add myself.
........
  r118814 | jsm28 | 2006-11-14 08:01:41 -0800 (Tue, 14 Nov 2006) | 3 lines

        * testsuite/26_numerics/complex/13450.cc: Do not test long double
        in IBM long double case.
........
  r118819 | mmitchel | 2006-11-14 09:15:08 -0800 (Tue, 14 Nov 2006) | 3 lines

        PR c++/29106
        * g++.dg/init/self1.C: New test.
........
  r118820 | burnus | 2006-11-14 09:31:00 -0800 (Tue, 14 Nov 2006) | 6 lines

  2006-11-14  Tobias Burnus  <burnus@net-b.de>

         * match.c (gfc_match_namelist): Add missing space to
           error message.
........
  r118821 | dberlin | 2006-11-14 10:12:20 -0800 (Tue, 14 Nov 2006) | 24 lines

  2006-11-14  Daniel Berlin  <dberlin@dberlin.org>

        Fix PR tree-optimization/27755

        * tree-ssa-pre.c: Update comments.
        (bb_bitmap_sets): Add pa_in and  deferred member.
        (BB_DEFERRED): New macro.
        (maximal_set): New variable.
        (pre_stats): Add pa_insert member.
        (bitmap_set_and): Short circuit orig == dest.
        (bitmap_set_subtract_values): New function.
        (bitmap_set_contains_expr): Ditto.
        (translate_vuses_through_block): Add phiblock argument.
        (dependent_clean): New function.
        (compute_antic_aux): Update for maximal_set changes.
        (compute_partial_antic_aux): New function.
        (compute_antic): Handle partial anticipation.
        (do_partial_partial_insertion): New function.
        (insert_aux): Handle partial anticipation.
        (add_to_sets): Add to maximal set.
        (compute_avail): Ditto.
        (init_pre): Initialize maximal_set.
        (execute_pre): Do partial anticipation if -O3+.
........
  r118823 | echristo | 2006-11-14 11:42:51 -0800 (Tue, 14 Nov 2006) | 4 lines

  2006-11-14  Eric Christopher  <echristo@apple.com>

          * configure: Regenerate with autoconf 2.59.
........
  r118825 | jsm28 | 2006-11-14 12:36:28 -0800 (Tue, 14 Nov 2006) | 5 lines

        * config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
        iwmmxt_nregs if TARGET_IWMMXT_ABI.
        * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
        movv2si_internal): Support moves between core registers.
........
  r118826 | ctice | 2006-11-14 12:55:56 -0800 (Tue, 14 Nov 2006) | 4 lines

  Add ability to generate DWARF pubtypes section if DEBUG_PUBTYPES_SECTION
  is defined.  Also add dejagnu testcases for pubtypes.
........
  r118827 | rguenth | 2006-11-14 14:01:08 -0800 (Tue, 14 Nov 2006) | 5 lines

  2006-11-14  Richard Guenther  <rguenther@suse.de>

          * gcc.target/i386/math-torture/math-torture.exp: Restrict
          to i?86 and x86_64 targets.
........
  r118829 | rearnsha | 2006-11-14 15:25:43 -0800 (Tue, 14 Nov 2006) | 11 lines

        * expmed.c (emit_store_flag_1): New function.
        (emit_store_flag): Call it.  If we can't find a suitable scc insn,
        try a cstore insn.
        * expr.c (do_store_flag): If we can't find a scc insn, try cstore.
        Use do_compare_rtx_and_jump.
        * arm.h (BRANCH_COST): Increase to 2 on Thumb.
        * arm.md (cstoresi4): New define_expand.
        (cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
        (cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
        (cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.
........
  r118835 | gccadmin | 2006-11-14 16:17:59 -0800 (Tue, 14 Nov 2006) | 1 line

  Daily bump.
........
  r118841 | brooks | 2006-11-14 19:49:21 -0800 (Tue, 14 Nov 2006) | 8 lines

  * lang.opt: Remove -fno-backend option.
  * gfortran.h (gfc_option_t): Remove flag_no_backend.
  * options.c (gfc_init_options): Remove flag_no_backend.
  (gfc_handle_option): Remove -fno-backend option handler.
  * parse.c (gfc_parse_file): Remove references to
  gfc_option.flag_no_backend.
........
  r118842 | brooks | 2006-11-14 19:52:03 -0800 (Tue, 14 Nov 2006) | 8 lines

  * gfortran.h (GFC_MAX_LINE): Remove constant definition.
  (gfc_option_t): Clarify comments.
  * options.c: Set default line length limits to actual default
  values, rather than flag values.
  * scanner.c: Eliminate checking and handling of the
  fixed/free_line_length flag values.
........
  r118843 | brooks | 2006-11-14 20:00:35 -0800 (Tue, 14 Nov 2006) | 14 lines

  PR fortran/29702
  * fortran/error.c (show_loci): Move column-offset calculation to
  show_locus.
  (show_locus): Remove blank lines before "Included in"
  lines, clean up code, calculate column-offsets, print
  column number is error-header lines as appropriate.
  (error_integer): (new function) Print integer to error
  buffer.
  (error_print): Use error_integer, avoid possible buffer
  overflows from buggy error formats.
  * testsuite/lib/gfortran-dg.exp (gfortran-dg-test): Ignore column
  numbers in error message headers.
........
  r118844 | bdavis | 2006-11-14 21:10:22 -0800 (Tue, 14 Nov 2006) | 14 lines

  2006-11-15  Bud Davis <bdavis9659@sbcglobal.net>

          PR fortran/28974
          * gfortran.h (gfc_expr): Add element which holds a splay-tree
          for the exclusive purpose of quick access to a constructor by
          offset.
          * data.c (find_con_by_offset): Use the splay tree for the search.
          (gfc_assign_data_value): Use the splay tree.
          (gfc_assign_data_value_range): ditto.
          * expr.c (gfc_get_expr): Initialize new element to null.
          (gfc_free_expr): Delete splay tree when deleting gfc_expr.
........
  r118845 | rguenth | 2006-11-15 00:07:03 -0800 (Wed, 15 Nov 2006) | 6 lines

  2006-11-15  Paolo Bonzini  <bonzini@gnu.org>

        PR middle-end/29753
        * gimplify.c (fold_indirect_ref_rhs): Use
        STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.
........
  r118848 | jakub | 2006-11-15 01:35:34 -0800 (Wed, 15 Nov 2006) | 13 lines

        PR tree-optimization/29581
        * lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
        REPLACEMENTS, FIRSTBSI arguments.  If initial condition or
        type is different between Y and USE, create a temporary
        variable, initialize it at the beginning of the body bb
        and use it as replacement instead of Y.

        * gcc.dg/pr29581-1.c: New test.
        * gcc.dg/pr29581-2.c: New test.
        * gcc.dg/pr29581-3.c: New test.
        * gcc.dg/pr29581-4.c: New test.
        * gfortran.dg/pr29581.f90: New test.
........
  r118851 | burnus | 2006-11-15 02:02:21 -0800 (Wed, 15 Nov 2006) | 14 lines

  fortran/
  2006-11-15  Tobias Burnus  <burnus@net-b.de>

         PR fortran/29806
         * parse.c (parse_contained): Check for empty contains statement.

  testsuite/
  2006-11-15  Tobias Burnus  <burnus@net-b.de>

         PR fortran/29806
         * gfortran.dg/contains.f90: New test.
         * gfortran.dg/derived_function_interface_1.f90: Add a dg-warning.
........
  r118852 | burnus | 2006-11-15 02:13:16 -0800 (Wed, 15 Nov 2006) | 16 lines

  fortran/
  2006-11-15  Tobias Burnus  <burnus@net-b.de>
              Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

         PR fortran/27588
         * trans-expr.c (gfc_conv_substring): Add bounds checking.
           (gfc_conv_variable, gfc_conv_substring_expr): Pass more
           arguments to gfc_conv_substring.

  testsuite/
  2006-11-15  Tobias Burnus  <burnus@net-b.de>

         PR fortran/27588
         * gfortran.dg/char_bounds_check_fail_1.f90: New test.
........
  r118853 | bernds | 2006-11-15 04:23:09 -0800 (Wed, 15 Nov 2006) | 3 lines

        * tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.
........
  r118854 | bernds | 2006-11-15 04:27:32 -0800 (Wed, 15 Nov 2006) | 4 lines

        * config/bfin/bfin.c (legitimize_pic_address): Lose dead code
        that tests for CONSTANT_POOL_ADDRESS_P.
........
  r118855 | amylaar | 2006-11-15 05:16:41 -0800 (Wed, 15 Nov 2006) | 7 lines

  2006-11-15  Rask Ingemann Lambertsen <rask@sygehus.dk>
            J"orn Rennecke <joern.rennecke@st.com>

        * combine.c (likely_spilled_retval_1): Fix masking operation.
        (likely_spilled_retval_p): Use proper pattern for call to
        likely_spilled_retval_1.
........
  r118856 | bernds | 2006-11-15 06:29:10 -0800 (Wed, 15 Nov 2006) | 7 lines

        * tree-flow.h (multiplier_allowed_in_address_p): Adjust prototype.
        * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): New
        arg MODE; all callers changed.  Use it to determine validity per
        machine mode instead of using Pmode for all memory references.
        (get_address_cost): Likewise add and use new arg MEM_MODE.
........
  r118857 | burnus | 2006-11-15 07:46:42 -0800 (Wed, 15 Nov 2006) | 24 lines

  fortran/
  2006-11-15  Tobias Burnus  <burnus@net-b.de>

         PR fortran/27546
         * decl.c (gfc_match_import,variable_decl):
           Add IMPORT support.
           (gfc_match_kind_spec): Fix typo in gfc_error.
         * gfortran.h (gfc_namespace, gfc_statement):
           Add IMPORT support.
         * parse.c (decode_statement,gfc_ascii_statement,
           verify_st_order): Add IMPORT support.
         * match.h: Add gfc_match_import.
         * gfortran.texi: Add IMPORT to the supported
           Fortran 2003 features.

  testsuite/
   2006-11-15  Tobias Burnus  <burnus@net-b.de>

         PR fortran/27546
         * gfortran.dg/import.f90: New test.
         * gfortran.dg/import2.f90: New test.
         * gfortran.dg/import3.f90: New test.
........
  r118858 | burnus | 2006-11-15 08:16:19 -0800 (Wed, 15 Nov 2006) | 6 lines

  2006-11-15  Tobias Burnus  <burnus@net-b.de>

         * parse.c (parse_contained): Fix indention
           of one line.
........
  r118859 | uros | 2006-11-15 08:21:58 -0800 (Wed, 15 Nov 2006) | 36 lines

        * config/i386/i386.opt: New target option -mx87regparm.

        * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
        float_in_x87: Add new variables. mmx_words, sse_words: Remove.
        (X87_REGPARM_MAX): Define.

        * config/i386/i386.c (override_options): Error out for
        -mx87regparm but no 80387 support.
        (ix86_attribute_table): Add x87regparm.
        (ix86_handle_cconv_attribute): Update comments for x87regparm.
        (ix86_comp_type_attributes): Check for mismatched x87regparm types.
        (ix86_function_x87regparm): New function.
        (ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
        point registers.
        (init_cumulative_args): Initialize x87_nregs and float_in_x87
        variables.
        (function_arg_advance): Process x87_nregs and x87_regno when
        floating point argument is to be passed in 80387 register.
        (function_arg): Pass XFmode arguments in 80387 registers for local
        functions.  Pass SFmode and DFmode arguments to local functions
        in 80387 registers when flag_unsafe_math_optimizations is set.

        * reg-stack.c (convert_regs_entry): Disable NaN load for
        stack registers that are used for argument passing.

        * doc/extend.texi: Document x87regparm function attribute.
        * doc/invoke.texi: Document -mx87regparm.

  testsuite/ChangeLog:

        * gcc.target/i386/x87regparm-1.c: New test.
        * gcc.target/i386/x87regparm-2.c: New test.
        * gcc.target/i386/x87regparm-3.c: New test.
        * gcc.target/i386/x87regparm-4.c: New test.
........
  r118861 | pinskia | 2006-11-15 09:04:56 -0800 (Wed, 15 Nov 2006) | 15 lines

  2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

          PR tree-opt/29788
          * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
          to what is the const decl is a place holder for.

  2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

          PR tree-opt/29788
          * gfortran.fortran-torture/compile/inline_1.f90:
          New testcase.
........
  r118863 | bernds | 2006-11-15 09:54:55 -0800 (Wed, 15 Nov 2006) | 4 lines

        * tree-ssa-loop-ivopts.c (get_address_cost): Make sure memory
        addresses we generate for testing are aligned.
........
  r118864 | pbrook | 2006-11-15 10:12:17 -0800 (Wed, 15 Nov 2006) | 9 lines

  2006-11-15  Paul Brook  <paul@codesourcery.com>

        gcc/
        * config/arm/unwind-arm.c (_Unwind_GetDataRelBase,
        _Unwind_GetTextRelBase): Move from here ...
        * config/arm/pr-support.c (_Unwind_GetDataRelBase,
        _Unwind_GetTextRelBase): ... To here.
........
  r118868 | kargl | 2006-11-15 13:32:31 -0800 (Wed, 15 Nov 2006) | 5 lines

  2006-11-15  Steven G. Kargl  <kargl@gcc.gnu.org>

          * gfortran.dg/import3.f90: Fix error message.
........
  r118876 | gccadmin | 2006-11-15 16:17:49 -0800 (Wed, 15 Nov 2006) | 1 line

  Daily bump.
........
  r118879 | brooks | 2006-11-15 19:03:04 -0800 (Wed, 15 Nov 2006) | 3 lines

  * lang.opt: Rearrange entries back into ASCII order.
........
  r118880 | brooks | 2006-11-15 19:05:28 -0800 (Wed, 15 Nov 2006) | 12 lines

  * data.c: Remove trailing periods from error messages.
  * decl.c: Likewise.
  * expr.c: Likewise.
  * io.c: Likewise.
  * match.c: Likewise.
  * module.c: Likewise.
  * options.c: Likewise.
  * resolve.c: Likewise.
  * symbol.c: Likewise.
  * trans-io.c: Likewise.
........
  r118881 | hjl | 2006-11-15 19:50:16 -0800 (Wed, 15 Nov 2006) | 5 lines

  2006-11-15  H.J. Lu  <hongjiu.lu@intel.com>

        PR middle-end/29862
        * real.c (mpfr_from_real): Call mpfr_set_str before gcc_assert.
........
  r118882 | mkuvyrkov | 2006-11-15 22:57:59 -0800 (Wed, 15 Nov 2006) | 14 lines

  2006-11-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

        PR target/29201
        * cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
        bb to ...
        (get_last_bb_insn): ... new global function.
        (basic_block.h): Declare it.
        * haifa-sched.c (create_recovery_block): Use it.

  2006-11-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

        PR target/29201
        * gcc.c-torture/compile/pr29201.c: New test for ia64 target.
........
  r118883 | uros | 2006-11-15 23:30:18 -0800 (Wed, 15 Nov 2006) | 7 lines

        * config/i386/i386.c (ix86_function_sseregparm): Fix comment:
        number of arguments passed to local functions in SSE registers is 3.

        * doc/invoke.texi (Function Attributes) [sseregparm]: Correct
        number of arguments passed in SSE registers to 3.
........
  r118884 | rearnsha | 2006-11-16 00:57:50 -0800 (Thu, 16 Nov 2006) | 4 lines

        * arm.md (abssi2): Allow Thumb as well.  Use an SImode scratch for
        Thumb.
        (arm_neg_abssi2): Renamed from neg_abssi2.
        (thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.
........
  r118887 | fxcoudert | 2006-11-16 03:20:57 -0800 (Thu, 16 Nov 2006) | 5 lines

        * trans-decl.c (gfc_get_symbol_decl): Fix formatting.

        * io/open.c (new_unit): Format %d expects an int variable.
        * runtime/error.c (show_locus): Format %d expects an int variable.
........
  r118888 | fxcoudert | 2006-11-16 04:25:11 -0800 (Thu, 16 Nov 2006) | 11 lines

        PR fortran/29391
        PR fortran/29489

        * simplify.c (simplify_bound): Fix the simplification of
        LBOUND/UBOUND intrinsics.
        * trans-intrinsic.c (simplify_bound): Fix the logic, and
        remove an erroneous assert.

        * gcc/testsuite/gfortran.dg/bound_2.f90: Add more checks.
        * gcc/testsuite/gfortran.dg/bound_3.f90: New test.
........
  r118889 | jsm28 | 2006-11-16 05:36:23 -0800 (Thu, 16 Nov 2006) | 3 lines

        * config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
        memory operand.
........
  r118894 | rakdver | 2006-11-16 08:24:31 -0800 (Thu, 16 Nov 2006) | 4 lines

        * MAINTAINERS: Add myself and Daniel Berlin as loop optimizer
        maintainers.
........
  r118900 | ebotcazou | 2006-11-16 13:25:16 -0800 (Thu, 16 Nov 2006) | 8 lines

        PR middle-end/26306
        * gimplify.c (gimplify_expr): Only force a load for references to
        non-BLKmode volatile values.
        * doc/implement-c.texi (Qualifiers implementation): Document the
        interpretation of what a volatile access is.
        * doc/extend.texi (C++ Extensions): Rework same documentation.
........
  r118903 | mueller | 2006-11-16 14:07:30 -0800 (Thu, 16 Nov 2006) | 19 lines

  2006-11-16  Dirk Mueller  <dmueller@suse.de>

         * tree-vrp.c (get_value_range): Use XCNEW instead
         of XNEW and memset.
         (insert_range_assertions): Use XCNEWVEC instead
         of XNEWVEC and memset.
         (vrp_initialize): Same.
         (vrp_finalize): Same.
         * tree-ssa-ccp.c (ccp_initialize): Same.
         * predict.c (tree_bb_level_predictions): Same.
         * calls.c (expand_call): Same.
         * tree-ssa-copy.c (init_copy_prop): Same.
         (fini_copy_prop): Same.
         * tree-ssa-alias.c (get_ptr_info): Use GGC_CNEW instead
         of GGC_NEW and memset.

         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
         GGC_NEW and memset.
........
  r118904 | mrs | 2006-11-16 14:26:09 -0800 (Thu, 16 Nov 2006) | 2 lines

        * Makefile.in (targhooks.o): Add $(OPTABS_H).
........
  r118910 | gccadmin | 2006-11-16 16:17:33 -0800 (Thu, 16 Nov 2006) | 1 line

  Daily bump.
........
  r118912 | jsm28 | 2006-11-16 16:25:05 -0800 (Thu, 16 Nov 2006) | 8 lines

        * gcc.dg/tree-ssa/stdarg-2.c, gcc.dg/tree-ssa/stdarg-4.c:
        Condition PowerPC tests for saving FPRs on powerpc_fprs.
        * gcc.target/powerpc/compress-float-ppc.c,
        gcc.target/powerpc/compress-float-ppc-pic.c: Only test if
        powerpc_fprs.
        * gcc.target/powerpc/rs6000-power2-2.c: Only test if powerpc_fprs;
        do not pass -mhard-float.
........
  r118914 | rearnsha | 2006-11-16 16:27:18 -0800 (Thu, 16 Nov 2006) | 2 lines

        * arm.h (CONSTANT_ALIGNMENT): Don't over-align strings when
        optimizing for size.
........
  r118917 | mrs | 2006-11-16 22:48:01 -0800 (Thu, 16 Nov 2006) | 8 lines

        * config/darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on
        pre-darwin9 system, unless the user asks for it directly.
        (PREFERRED_DEBUGGING_TYPE): Likewise.
        * config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Likewise.
        * config.gcc: Add suppport for darwin9.h.
        * config/darwin9.h: Add.
        * doc/install.texi (Specific): Clarify darwin documentation.
........
  r118918 | uros | 2006-11-16 22:50:45 -0800 (Thu, 16 Nov 2006) | 3 lines

        * config/i386/i386.c (ix86_function_sseregparm): Missing comment
update.
........
  r118921 | jakub | 2006-11-17 00:57:45 -0800 (Fri, 17 Nov 2006) | 6 lines

        PR middle-end/29584
        * tree-ssa-forwprop.c (simplify_switch_expr): Don't
        optimize if DEF doesn't have integral type.

        * gcc.dg/torture/pr29584.c: New test.
........
  r118924 | rakdver | 2006-11-17 01:24:01 -0800 (Fri, 17 Nov 2006) | 4 lines

        * tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
        select subvars of var.
........
  r118925 | rakdver | 2006-11-17 01:34:08 -0800 (Fri, 17 Nov 2006) | 8 lines

  2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>

        * tree-vect-transform.c (vect_create_epilog_for_reduction): Fix
        formating.
        (vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
        vect_gen_niters_for_prolog_loop): Fold the emited expressions.
........
  r118926 | rakdver | 2006-11-17 02:29:07 -0800 (Fri, 17 Nov 2006) | 10 lines

        PR tree-optimization/29801
        * tree-ssa-ccp.c (get_symbol_constant_value): New function.
        (get_default_value): Use get_symbol_constant_value.
        (set_lattice_value): ICE when the value of the constant is
        changed.
        (visit_assignment): Ignore VDEFs of read-only variables.

        * gcc.dg/pr29801.c: New test.
........
  r118927 | bonzini | 2006-11-17 02:31:47 -0800 (Fri, 17 Nov 2006) | 18 lines

  2006-11-16  Paolo Bonzini  <bonzini@gnu.org>

        * Makefile.tpl (clean-target-libgcc): Test for gcc Makefile presence.
        (unstage): Test for stage_last presence.

        PR bootstrap/29802
        * Makefile.tpl (POSTSTAGE1_FLAGS_TO_PASS): Add HOST_SUBDIR in
STAGE_PREFIX.
        * Makefile.in: Regenerate.

  libada:
  2006-11-16  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/29802
        * configure.ac: Call GCC_TOPLEV_SUBDIRS.
        * configure: Regenerate.
        * Makefile.in: Replace host_subdir.
........
  r118930 | fxcoudert | 2006-11-17 03:11:25 -0800 (Fri, 17 Nov 2006) | 27 lines

        * gfortran.h (gfc_add_intrinsic_modules_path,
        gfc_open_intrinsic_module): New prototypes.
        (gfc_add_include_path, gfc_open_included_file): Update prototypes.
        * lang.opt: Add -fintrinsic-modules-path option.
        * module.c (gfc_match_use): Match the Fortran 2003 form of
        USE statement.
        (gfc_use_module): Also handle intrinsic modules. 
        * scanner.c (gfc_directorylist): Add use_for_modules for field.
        (intrinsic_modules_dirs): New static variable.
        (add_path_to_list, gfc_add_intrinsic_modules_path): New functions.
        (gfc_add_include_path): Use the new add_path_to_list helper
        function.
        (gfc_release_include_path): Free memory for intrinsic_modules_dirs.
        (open_included_file, gfc_open_intrinsic_module): New functions.
        (gfc_open_included_file): Use the new open_included_file
        helper function.
        * lang-specs.h: Use the new -fintrinsic-modules-path option.
        * parse.c (decode_statement): Do not match the required space
        after USE here.
        * options.c (gfc_handle_option): Handle the new option. Use new
        prototype for gfc_add_include_path.
        (gfc_post_options): Use new prototype for gfc_add_include_path.

        * gfortran.dg/use_1.f90: New test.
        * gfortran.dg/use_1.f90: New test.
        * gfortran.dg/use_1.f90: New test.
........
  r118931 | rakdver | 2006-11-17 03:29:17 -0800 (Fri, 17 Nov 2006) | 82 lines

        * tree-vrp.c (execute_vrp): Do not update current_loops.
        * loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
        * doc/loop.texi: Remove documentation for cancelled functions.
        * tree-ssa-loop-im.c (loop_commit_inserts): Removed.
        (move_computations, determine_lsm): Use bsi_commit_edge_inserts
        instead.
        * cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
        (remove_path): Ensure that in delete_basic_blocks, the loops
        are still allocated.
        (add_loop): Work on valid loop structures.
        (loopify): Modify call of add_loop.
        (mfb_update_loops): Removed.
        (create_preheader): Do not update loops explicitly.
        (force_single_succ_latches, loop_version): Do not use
        loop_split_edge_with.
        (loop_split_edge_with): Removed.
        * tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
        Do not use bsi_insert_on_edge_immediate_loop.
        (split_loop_exit_edge, tree_unroll_loop): Do not use
        loop_split_edge_with.
        (bsi_insert_on_edge_immediate_loop): Removed.
        * tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops.  Do not
        use loop_split_edge_with.
        * cfghooks.c: Include cfgloop.h.
        (verify_flow_info): Verify that loop_father is filled iff current_loops
        are available.
        (redirect_edge_and_branch_force, split_block, delete_basic_block,
        split_edge, merge_blocks, make_forwarder_block, duplicate_block):
        Update cfg.
        * cfgloopanal.c (mark_irreducible_loops): Work if the function contains
        no loops.
        * modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
        loop_split_edge_with.
        (sms_schedule): Use current_loops.
        * tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
        * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
        current_loops.
        (rtl_loop_init, rtl_loop_done): Do not set current_loops.
        * tree-ssa-sink.c (execute_sink_code): Use current_loops.
        * ifcvt.c (if_convert): Ditto.
        * predict.c (predict_loops): Do not clear current_loops.
        (tree_estimate_probability): Use current_loops.
        (propagate_freq): Receive head of the region to propagate instead of
        loop.
        (estimate_loops_at_level): Do not use shared to_visit bitmap.
        (estimate_loops): New function.  Handle case current_loops == NULL.
        (estimate_bb_frequencies): Do not allocate tovisit.  Use
        estimate_loops.
        * tree-ssa-loop.c (current_loops): Removed.
        (tree_loop_optimizer_init): Do not return loops.
        (tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
        * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
        slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
        Do not update loops explicitly.
        * function.h (struct function): Add x_current_loops field.
        (current_loops): New macro.
        * tree-if-conv.c (combine_blocks): Do not update loops explicitly.
        * loop-unroll.c (split_edge_and_insert): New function.
        (unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
        use loop_split_edge_with.
        * loop-doloop.c (add_test, doloop_modify): Ditto.
        * tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
        * cfglayout.c (copy_bbs): Do not update loops explicitly.
        * lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
        * tree-vect-transform.c (vect_transform_loop): Do not update loops
        explicitly.
        * cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
        (flow_loops_free): Do not free dfs_order and rc_order.
        (flow_loops_find): Do not set dfs_order and rc_order in loops
        structure.  Do not call loops and flow info verification.
        (add_bb_to_loop, remove_bb_from_loops): Check whether the block
        already belongs to some loop.
        * cfgloop.h (struct loops): Remove struct cfg.
        (current_loops, loop_split_edge_with): Declaration removed.
        (loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
        * tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
        Declaration removed.
        * Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
        * basic-block.h (split_edge_and_insert): Declare.
        * tree-cfg.c (remove_bb): Do not update loops explicitly.
........
  r118939 | ebotcazou | 2006-11-17 07:10:28 -0800 (Fri, 17 Nov 2006) | 5 lines

        PR ada/27936
        * trans.c (add_decl_expr): Do not dynamically elaborate padded objects
        if the initializer takes into account the padding.
........
  r118946 | bwilson | 2006-11-17 14:40:02 -0800 (Fri, 17 Nov 2006) | 2 lines

        * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a0 on exit.
........
  r118947 | bwilson | 2006-11-17 14:46:57 -0800 (Fri, 17 Nov 2006) | 2 lines

        * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
........
  r118948 | bwilson | 2006-11-17 14:55:13 -0800 (Fri, 17 Nov 2006) | 2 lines

        * config/xtensa/xtensa.md (entry): Do not emit .frame directive.
........
  r118949 | bwilson | 2006-11-17 14:59:50 -0800 (Fri, 17 Nov 2006) | 2 lines

        * config/xtensa/xtensa.md (tstsi): Delete
........
  r118952 | bwilson | 2006-11-17 15:10:48 -0800 (Fri, 17 Nov 2006) | 24 lines

        * config/xtensa/predicates.md (addsubx_operand): New.
        * config/xtensa/xtensa.c (xtensa_emit_branch): New.
        (xtensa_emit_bit_branch): New.
        (xtensa_emit_movcc): New.
        * config/xtensa/xtensa.md (any_minmax): New code macro.
        (minmax): New code attribute.
        (any_cond, any_scc, any_scc_sf): New code macros.
        (*addx2, *addx4, *addx8): Delete.
        (*addx): New.
        (*subx2, *subx4, *subx8): Delete.
        (*subx): New.
        (sminsi3, uminsi3, smaxsi3, umaxsi3): Use any_minmax macro.
        (beq, bne, bgt, bge, blt, ble, bgtu, bgeu, bltu, bleu): Use any_cond.
        (*btrue, *bfalse, *ubtrue, *ubfalse): Use xtensa_emit_branch.
        (*bittrue, *bitfalse): Use xtensa_emit_bit_branch.
        (seq, sne, sgt, sge, slt, sle): Use any_scc macro.
        (movsicc_internal0, movsicc_internal1): Use xtensa_emit_movcc.
        (movsfcc_internal0, movsfcc_internal1): Likewise.
        (seq_sf, slt_sf, sle_sf): Use any_scc_sf macro.
        * config/xtensa/xtensa-protos.h: (xtensa_emit_branch): New.
        (xtensa_emit_bit_branch): New.
        (xtensa_emit_movcc): New.
        (function_arg_boundary): Add missing prototype.
........
  r118953 | dj | 2006-11-17 15:15:29 -0800 (Fri, 17 Nov 2006) | 3 lines

  * reload1.c (reloads_unique_chain): New.
  (reloads_conflict): Call it.
........
  r118954 | jvdelisle | 2006-11-17 15:30:49 -0800 (Fri, 17 Nov 2006) | 4 lines

  2006-11-17  Jerry DeLisle  <jvdelisle@fcc.gnu.org

        * ChangeLog: Fix typos.
........
  r118959 | gccadmin | 2006-11-17 16:17:55 -0800 (Fri, 17 Nov 2006) | 1 line

  Daily bump.
........
  r118961 | jsm28 | 2006-11-17 16:22:45 -0800 (Fri, 17 Nov 2006) | 11 lines

  gcc:
        * config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Define.
        * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
        __NO_LWSYNC__ if TARGET_NO_LWSYNC.
        * config/rs6000/sync.md (lwsync): Emit plain sync if
        TARGET_NO_LWSYNC.

  libstdc++-v3:
        * config/cpu/powerpc/atomic_word.h (_GLIBCXX_WRITE_MEM_BARRIER):
        Use plain sync if __NO_LWSYNC__.
........
  r118964 | jsm28 | 2006-11-17 16:27:03 -0800 (Fri, 17 Nov 2006) | 3 lines

        * config/rs6000/spe.md (movv4hi_internal): Add alternative for
        easy vector constant loads.
........
  r118969 | aldyh | 2006-11-18 02:55:38 -0800 (Sat, 18 Nov 2006) | 3 lines

  * doc/invoke.texi: Fix mno-isel typo.
........
  r118971 | fxcoudert | 2006-11-18 04:16:42 -0800 (Sat, 18 Nov 2006) | 7 lines

        PR fortran/24285

        * io.c (check_format): Allow dollars everywhere in format, and
        issue a warning.

        * gfortran.dg/dollar_edit_descriptor-3.f: New test.
........
  r118972 | ghazi | 2006-11-18 06:08:54 -0800 (Sat, 18 Nov 2006) | 5 lines

        * configure.in (--with-mpfr-dir): Also look in .libs and _libs for
        libmpfr.a.
        * configure: Regenerate.
........
  r118973 | vmakarov | 2006-11-18 10:43:19 -0800 (Sat, 18 Nov 2006) | 29 lines

  2006-11-18  Vladimir Makarov  <vmakarov@redhat.com>

        * doc/invoke.texi (core2): Add item.

        * config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New
        macros.
        (TARGET_CPU_CPP_BUILTINS): Add code for core2.
        (TARGET_CPU_DEFAULT_generic): Change value.
        (TARGET_CPU_DEFAULT_NAMES): Add core2.
        (processor_type): Add new constant PROCESSOR_CORE2.

        * config/i386/i386.md (cpu): Add core2.

        * config/i386/i386.c (core2_cost): New initialized variable.
        (m_CORE2): New macro.
        (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
        x86_deep_branch, x86_partial_reg_stall, x86_use_simode_fiop,
        x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
        x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
        x86_partial_reg_dependency, x86_memory_mismatch_stall,
        x86_accumulate_outgoing_args, x86_prologue_using_move,
        x86_epilogue_using_move, x86_arch_always_fancy_math_387,
        x86_sse_partial_reg_dependency, x86_rep_movl_optimal,
        x86_use_incdec, x86_four_jump_limit, x86_schedule,
        x86_pad_returns): Add m_CORE2.
        (override_options): Add entries for Core2.
        (ix86_issue_rate): Add case for Core2.
........
  r118974 | rguenth | 2006-11-18 12:03:52 -0800 (Sat, 18 Nov 2006) | 8 lines

  2006-11-18  Richard Guenther  <rguenther@suse.de>

        * config/i386/i386.c (ix86_builtins): New array for ix86
        builtin function decls.
        (def_builtin): New function.
        (def_builtin_const): Likewise.
        (ix86_init_mmx_sse_builtins): Mark sqrt and cvt builtins const.
........
  r118975 | ghazi | 2006-11-18 12:29:22 -0800 (Sat, 18 Nov 2006) | 6 lines

        * fold-const.c (fold_strip_sign_ops): Handle copysign.

  testsuite:
        * gcc.dg/builtins-20.c: Add cases for copysign.
........
  r118976 | ghazi | 2006-11-18 12:38:40 -0800 (Sat, 18 Nov 2006) | 9 lines

        * builtins.c (integer_valued_real_p): Handle fmin/fmax.
        (fold_builtin_fmin_fmax): New.
        (fold_builtin_1): Use it.

  testsuite:
        * gcc.dg/builtins-20.c: Add fmin/fmax cases.
        * gcc.dg/torture/builtin-minmax-1.c: New.
........
  r118977 | danglin | 2006-11-18 15:17:33 -0800 (Sat, 18 Nov 2006) | 6 lines

        PR fortran/27885
        PR middle-end/28176
        * stor-layout.c (set_sizetype): Limit precision of *bitsizetypes types
        to MAX_FIXED_MODE_SIZE.
........
  r118982 | gccadmin | 2006-11-18 16:18:13 -0800 (Sat, 18 Nov 2006) | 1 line

  Daily bump.
........
  r118987 | dorit | 2006-11-19 03:11:57 -0800 (Sun, 19 Nov 2006) | 1 line

  * gcc.dg/vect/vect-27.c: Fix initialization.
........

Added:
    branches/fixed-point/gcc/config/darwin9.h
      - copied unchanged from r118987, trunk/gcc/config/darwin9.h
    branches/fixed-point/gcc/testsuite/g++.dg/init/self1.C
      - copied unchanged from r118987, trunk/gcc/testsuite/g++.dg/init/self1.C
    branches/fixed-point/gcc/testsuite/g++.dg/pubtypes.C
      - copied unchanged from r118987, trunk/gcc/testsuite/g++.dg/pubtypes.C
    branches/fixed-point/gcc/testsuite/gcc.c-torture/compile/pr29201.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.c-torture/compile/pr29201.c
    branches/fixed-point/gcc/testsuite/gcc.c-torture/execute/pr29798.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.c-torture/execute/pr29798.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pr29581-1.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pr29581-1.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pr29581-2.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pr29581-2.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pr29581-3.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pr29581-3.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pr29581-4.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pr29581-4.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pr29801.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pr29801.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pubtypes-1.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pubtypes-1.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pubtypes-2.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pubtypes-2.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pubtypes-3.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pubtypes-3.c
    branches/fixed-point/gcc/testsuite/gcc.dg/pubtypes-4.c
      - copied unchanged from r118987, trunk/gcc/testsuite/gcc.dg/pubtypes-4.c
    branches/fixed-point/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
    branches/fixed-point/gcc/testsuite/gcc.dg/torture/pr29584.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.dg/torture/pr29584.c
    branches/fixed-point/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
    branches/fixed-point/gcc/testsuite/gcc.target/i386/x87regparm-1.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.target/i386/x87regparm-1.c
    branches/fixed-point/gcc/testsuite/gcc.target/i386/x87regparm-2.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.target/i386/x87regparm-2.c
    branches/fixed-point/gcc/testsuite/gcc.target/i386/x87regparm-3.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.target/i386/x87regparm-3.c
    branches/fixed-point/gcc/testsuite/gcc.target/i386/x87regparm-4.c
      - copied unchanged from r118987,
trunk/gcc/testsuite/gcc.target/i386/x87regparm-4.c
    branches/fixed-point/gcc/testsuite/gfortran.dg/conflicts.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/conflicts.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/contains.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/contains.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/dollar_edit_descriptor-3.f
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/dollar_edit_descriptor-3.f
    branches/fixed-point/gcc/testsuite/gfortran.dg/import.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/import.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/import2.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/import2.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/import3.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/import3.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/pr29581.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/pr29581.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/use_1.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/use_1.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/use_2.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/use_2.f90
    branches/fixed-point/gcc/testsuite/gfortran.dg/use_3.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.dg/use_3.f90
   
branches/fixed-point/gcc/testsuite/gfortran.fortran-torture/compile/inline_1.f90
      - copied unchanged from r118987,
trunk/gcc/testsuite/gfortran.fortran-torture/compile/inline_1.f90
    branches/fixed-point/gcc/testsuite/gnat.dg/volatile_aggregate.adb
      - copied unchanged from r118987,
trunk/gcc/testsuite/gnat.dg/volatile_aggregate.adb
Modified:
    branches/fixed-point/   (props changed)
    branches/fixed-point/ChangeLog
    branches/fixed-point/MAINTAINERS
    branches/fixed-point/Makefile.in
    branches/fixed-point/Makefile.tpl
    branches/fixed-point/configure
    branches/fixed-point/configure.in
    branches/fixed-point/gcc/ChangeLog
    branches/fixed-point/gcc/DATESTAMP
    branches/fixed-point/gcc/Makefile.in
    branches/fixed-point/gcc/ada/ChangeLog
    branches/fixed-point/gcc/ada/trans.c
    branches/fixed-point/gcc/basic-block.h
    branches/fixed-point/gcc/builtins.c
    branches/fixed-point/gcc/calls.c
    branches/fixed-point/gcc/cfghooks.c
    branches/fixed-point/gcc/cfglayout.c
    branches/fixed-point/gcc/cfgloop.c
    branches/fixed-point/gcc/cfgloop.h
    branches/fixed-point/gcc/cfgloopanal.c
    branches/fixed-point/gcc/cfgloopmanip.c
    branches/fixed-point/gcc/cfgrtl.c
    branches/fixed-point/gcc/combine.c
    branches/fixed-point/gcc/config.gcc
    branches/fixed-point/gcc/config/arm/arm.h
    branches/fixed-point/gcc/config/arm/arm.md
    branches/fixed-point/gcc/config/arm/iwmmxt.md
    branches/fixed-point/gcc/config/arm/pr-support.c
    branches/fixed-point/gcc/config/arm/unwind-arm.c
    branches/fixed-point/gcc/config/bfin/bfin.c
    branches/fixed-point/gcc/config/darwin.c
    branches/fixed-point/gcc/config/darwin.h
    branches/fixed-point/gcc/config/i386/darwin.h
    branches/fixed-point/gcc/config/i386/i386.c
    branches/fixed-point/gcc/config/i386/i386.h
    branches/fixed-point/gcc/config/i386/i386.md
    branches/fixed-point/gcc/config/i386/i386.opt
    branches/fixed-point/gcc/config/m32c/m32c.c
    branches/fixed-point/gcc/config/rs6000/rs6000-c.c
    branches/fixed-point/gcc/config/rs6000/rs6000.h
    branches/fixed-point/gcc/config/rs6000/spe.md
    branches/fixed-point/gcc/config/rs6000/sync.md
    branches/fixed-point/gcc/config/xtensa/elf.h
    branches/fixed-point/gcc/config/xtensa/lib1funcs.asm
    branches/fixed-point/gcc/config/xtensa/predicates.md
    branches/fixed-point/gcc/config/xtensa/xtensa-protos.h
    branches/fixed-point/gcc/config/xtensa/xtensa.c
    branches/fixed-point/gcc/config/xtensa/xtensa.md
    branches/fixed-point/gcc/cp/ChangeLog
    branches/fixed-point/gcc/cp/name-lookup.c
    branches/fixed-point/gcc/doc/extend.texi
    branches/fixed-point/gcc/doc/implement-c.texi
    branches/fixed-point/gcc/doc/install.texi
    branches/fixed-point/gcc/doc/invoke.texi
    branches/fixed-point/gcc/doc/loop.texi
    branches/fixed-point/gcc/dwarf2out.c
    branches/fixed-point/gcc/expmed.c
    branches/fixed-point/gcc/expr.c
    branches/fixed-point/gcc/fold-const.c
    branches/fixed-point/gcc/fortran/ChangeLog
    branches/fixed-point/gcc/fortran/data.c
    branches/fixed-point/gcc/fortran/decl.c
    branches/fixed-point/gcc/fortran/error.c
    branches/fixed-point/gcc/fortran/expr.c
    branches/fixed-point/gcc/fortran/gfortran.h
    branches/fixed-point/gcc/fortran/gfortran.texi
    branches/fixed-point/gcc/fortran/io.c
    branches/fixed-point/gcc/fortran/lang-specs.h
    branches/fixed-point/gcc/fortran/lang.opt
    branches/fixed-point/gcc/fortran/match.c
    branches/fixed-point/gcc/fortran/match.h
    branches/fixed-point/gcc/fortran/module.c
    branches/fixed-point/gcc/fortran/options.c
    branches/fixed-point/gcc/fortran/parse.c
    branches/fixed-point/gcc/fortran/resolve.c
    branches/fixed-point/gcc/fortran/scanner.c
    branches/fixed-point/gcc/fortran/simplify.c
    branches/fixed-point/gcc/fortran/symbol.c
    branches/fixed-point/gcc/fortran/trans-decl.c
    branches/fixed-point/gcc/fortran/trans-expr.c
    branches/fixed-point/gcc/fortran/trans-intrinsic.c
    branches/fixed-point/gcc/fortran/trans-io.c
    branches/fixed-point/gcc/function.h
    branches/fixed-point/gcc/gimplify.c
    branches/fixed-point/gcc/haifa-sched.c
    branches/fixed-point/gcc/ifcvt.c
    branches/fixed-point/gcc/lambda-code.c
    branches/fixed-point/gcc/loop-doloop.c
    branches/fixed-point/gcc/loop-init.c
    branches/fixed-point/gcc/loop-unroll.c
    branches/fixed-point/gcc/loop-unswitch.c
    branches/fixed-point/gcc/modulo-sched.c
    branches/fixed-point/gcc/predict.c
    branches/fixed-point/gcc/real.c
    branches/fixed-point/gcc/reg-stack.c
    branches/fixed-point/gcc/reload1.c
    branches/fixed-point/gcc/stor-layout.c
    branches/fixed-point/gcc/testsuite/ChangeLog
    branches/fixed-point/gcc/testsuite/gcc.dg/builtins-20.c
    branches/fixed-point/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c
    branches/fixed-point/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c
    branches/fixed-point/gcc/testsuite/gcc.dg/vect/vect-27.c
   
branches/fixed-point/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
   
branches/fixed-point/gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
    branches/fixed-point/gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
    branches/fixed-point/gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c
    branches/fixed-point/gcc/testsuite/gfortran.dg/bound_2.f90
   
branches/fixed-point/gcc/testsuite/gfortran.dg/derived_function_interface_1.f90
    branches/fixed-point/gcc/testsuite/lib/gfortran-dg.exp
    branches/fixed-point/gcc/tree-cfg.c
    branches/fixed-point/gcc/tree-flow.h
    branches/fixed-point/gcc/tree-if-conv.c
    branches/fixed-point/gcc/tree-ssa-address.c
    branches/fixed-point/gcc/tree-ssa-alias.c
    branches/fixed-point/gcc/tree-ssa-ccp.c
    branches/fixed-point/gcc/tree-ssa-copy.c
    branches/fixed-point/gcc/tree-ssa-dom.c
    branches/fixed-point/gcc/tree-ssa-forwprop.c
    branches/fixed-point/gcc/tree-ssa-loop-ch.c
    branches/fixed-point/gcc/tree-ssa-loop-im.c
    branches/fixed-point/gcc/tree-ssa-loop-ivopts.c
    branches/fixed-point/gcc/tree-ssa-loop-manip.c
    branches/fixed-point/gcc/tree-ssa-loop.c
    branches/fixed-point/gcc/tree-ssa-pre.c
    branches/fixed-point/gcc/tree-ssa-sink.c
    branches/fixed-point/gcc/tree-vect-transform.c
    branches/fixed-point/gcc/tree-vectorizer.c
    branches/fixed-point/gcc/tree-vrp.c
    branches/fixed-point/libada/ChangeLog
    branches/fixed-point/libada/Makefile.in
    branches/fixed-point/libada/configure
    branches/fixed-point/libada/configure.ac
    branches/fixed-point/libgfortran/ChangeLog
    branches/fixed-point/libgfortran/io/open.c
    branches/fixed-point/libgfortran/runtime/error.c
    branches/fixed-point/libstdc++-v3/ChangeLog
    branches/fixed-point/libstdc++-v3/config/cpu/powerpc/atomic_word.h
    branches/fixed-point/libstdc++-v3/testsuite/26_numerics/complex/13450.cc

Propchange: branches/fixed-point/
            ('svk:merge' modified)

Propchange: branches/fixed-point/
            ('svnmerge-integrated' modified)


-- 


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


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2006-12-01  2:04 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-10-08 20:55 [Bug fortran/29391] New: LBOUND(TRANSPOSE(I)) doesn't work fxcoudert at gcc dot gnu dot org
2006-10-08 21:09 ` [Bug fortran/29391] " fxcoudert at gcc dot gnu dot org
2006-10-09 11:39 ` fxcoudert at gcc dot gnu dot org
2006-10-10  7:31 ` fxcoudert at gcc dot gnu dot org
2006-10-10 19:36 ` pault at gcc dot gnu dot org
2006-10-10 22:04 ` fxcoudert at gcc dot gnu dot org
2006-10-11  6:11 ` paulthomas2 at wanadoo dot fr
2006-10-11  7:27 ` fxcoudert at gcc dot gnu dot org
2006-10-11  7:32 ` fxcoudert at gcc dot gnu dot org
2006-10-11  8:02 ` paulthomas2 at wanadoo dot fr
2006-10-12 11:16 ` fxcoudert at gcc dot gnu dot org
2006-10-12 13:15 ` fxcoudert at gcc dot gnu dot org
2006-10-12 15:57 ` paulthomas2 at wanadoo dot fr
2006-10-13 12:20 ` fxcoudert at gcc dot gnu dot org
2006-10-13 12:24 ` [Bug fortran/29391] [4.1 only] LBOUND and UBOUND are broken fxcoudert at gcc dot gnu dot org
2006-10-17 10:45 ` fxcoudert at gcc dot gnu dot org
2006-10-22  4:47 ` [Bug fortran/29391] " pault at gcc dot gnu dot org
2006-11-16 12:25 ` fxcoudert at gcc dot gnu dot org
2006-11-16 23:56 ` [Bug fortran/29391] [4.2/4.1 only] " fxcoudert at gcc dot gnu dot org
2006-11-24 22:26 ` fxcoudert at gcc dot gnu dot org
2006-11-24 22:45 ` fxcoudert at gcc dot gnu dot org
2006-11-24 22:46 ` fxcoudert at gcc dot gnu dot org
2006-12-01  2:04 ` chaoyingfu at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).