c/7139: Shifting 1 through a 64bit int fails at 32bit line

Simon Shapiro shimon@nomis-storage.com
Thu Jun 27 16:06:00 GMT 2002


Thax for looking into this problem.

However, I would like to suggest that you may have dismissed the
problem a bit too quickly.

I am making this bold assumption based on my understanding that:

1 << 31 = 0x0000000080000000, and not 0xffffffff80000000
1 << 32 = 0x0000000100000000, and not  0x0000000000000001

Am I wrong?

Perhaps the example was 
too complicated.  Try this one:
#include <stdio.h>

int 
main()
{
        unsigned long long      i64;
        int                                     index;


        for (index = 0; index < 64; index++) {
                i64 = 1 << index;

                (void)fprintf(stdout, "1 << %d = %qx\n", index, i64);
        }
 
        return(0);
}

-------------------
> Synopsis: Shifting 1 through a 64bit int fails at 32bit line
> 
> State-Changed-From-To: open->closed
> State-Changed-By: mmitchel
> State-Changed-When: Thu Jun 27 15:07:03 2002
> State-Changed-Why:
>     Not a defect.
> 
>
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=g
cc&pr=7139
> 
Sincerely,

Simon Shapiro, CEO
Nomis Storage, Inc.



More information about the Gcc-bugs mailing list