public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/98789] New: Error with bit-operation after macro operation
@ 2021-01-22 10:43 maxim81m at mail dot ru
  2021-01-22 10:47 ` [Bug c/98789] " jakub at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: maxim81m at mail dot ru @ 2021-01-22 10:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98789

            Bug ID: 98789
           Summary: Error with bit-operation after macro operation
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: maxim81m at mail dot ru
  Target Milestone: ---

Created attachment 50029
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50029&action=edit
contains data for Debian10: README (compilers parameters), 1.i; 1.c; 1.s; 1.o
files

Good Day.

Error on x86-64 platform for Slackware 12 (gcc 4.3.3) and Debian 10 (gcc
8.3.0).
In platforms i386 works good. 

Build command: gcc -save-temps 1.c
Running: ./a.out

( I did rename 1.c to 1.cpp and build with g++ error is same )

The compilers parameters are in attachment. 

CODE:

     1  #include <stdio.h>
     2
     3  int main()
     4  {
     5
     6  typedef unsigned long int UINT4;
     7
     8  #define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
     9  #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
    10
    11  UINT4 a, b, c, d, x;
    12
    13  a =  0x0da0d5a9;
    14  printf("%010x\n", a ); // result: 0x0da0d5a9
    15  a = ROTATE_LEFT(a, 7);
    16  printf("%010x\n", a ); // result: 0xd06ad486
    17
    18  printf("\n" );
    19
    20  a =  0x0da0d5a9;
    21  printf("%010x\n", a ); // result: 0x0da0d5a9
    22  a = ROTATE_LEFT(a, 7);
    23  printf("%010x\n", a ); // result: 0xd06ad486 <<< OK
    24
    25  printf("\n" );
    26
    27  x = 0x36363132;
    28  a = 0x67452301;
    29  b = 0xefcdab89;
    30  c = 0x98badcfe;
    31  d = 0x10325476;
    32
    33  a += F ((b), (c), (d)) + (x) + (UINT4)(3614090360U);
    34  printf("%010x\n", a ); // result: 0x0da0d5a9 as in string 13
    35  a = ROTATE_LEFT(a, 7);
    36  printf("%010x\n", a ); // result: 0xd06ad586 <<< ERROR
    37
    38  return 0;
    39  }
    40

Thank You for a time.

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

* [Bug c/98789] Error with bit-operation after macro operation
  2021-01-22 10:43 [Bug c/98789] New: Error with bit-operation after macro operation maxim81m at mail dot ru
@ 2021-01-22 10:47 ` jakub at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-01-22 10:47 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98789

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |jakub at gcc dot gnu.org
         Resolution|---                         |INVALID

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
unsigned long int is 64-bit rather than 32-bit on x86_64.  So expecting your
ROTATE_LEFT macro to perform rotation is just incorrect assumption.

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

end of thread, other threads:[~2021-01-22 10:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22 10:43 [Bug c/98789] New: Error with bit-operation after macro operation maxim81m at mail dot ru
2021-01-22 10:47 ` [Bug c/98789] " jakub at gcc dot gnu.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).