integer*1 k, k2, k3, ka
      call c_i1(ISHFT(k,-BIT_SIZE(k)))
      end
      subroutine c_i1(i)
      integer*1 i
      end

Compile this at -O1 on ppc, we recieve an error message:
/usr/bin/ld: f90-intrinsic-bit.o 8 byte literal section (__TEXT,__literal8) 
size is not a multiple of 8 bytes
collect2: ld returned 1 exit status

If we look into the .s file, we have:
        .literal8
LC0:
        .byte   0

But that means the even though the type of the constant decl is of size one, 
the type of the value which 
is stored there is of size 8 which is just wrong.

I think this worked before but I could be wrong.

-- 
           Summary: ISHFT has the wrong type for constant values
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P2
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: powerpc-darwin


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

Reply via email to