gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gcc-12: Miscompilation of attached test files, gcc-11 ok


From: Camm Maguire
Subject: gcc-12: Miscompilation of attached test files, gcc-11 ok
Date: Wed, 09 Nov 2022 12:02:18 -0500

Subject: gcc-12: Miscompilation of attached test files, gcc-11 ok
Package: gcc-12
X-Debbugs-Cc: camm@debian.org
Version: 12.2.0-9
Severity: important


This prevents GCL using gcc-12.....


=============================================================================
File: t.c
=============================================================================
#include <stdio.h>

#define fixnum long
#define ufixnum unsigned long

fixnum
foo(fixnum i,fixnum x) {

  printf("foo\n");
  return x;

}

fixnum
bar(fixnum x) {

  printf("bar\n");
  return x;

}

struct fixn {
  fixnum d;
  fixnum FIXVAL;
};

union lu {
  struct fixn FIX;
};

typedef union lu *object;

extern object fixnum_add(fixnum,fixnum);
extern object make_fixnum1(fixnum);

object
baz(object x) {
  {
    fixnum fx=({register object _q2=(x);
               register fixnum _q3;
               _q3=(((ufixnum)(_q2))>=0x8000000000000000) ?
                 ((fixnum)(((fixnum)(_q2))-(0x8000000000000000 
+(0x4000000000000000>>1)))) :
                 (_q2)->FIX.FIXVAL;
               _q3;});
    return fx==( - ((long)((((unsigned long)1)<<((8*8)-1))-1)) - 1 ) ?
      fixnum_add(1,((long)((((unsigned long)1)<<((8*8)-1))-1))) :
      (fx<0 ?
       ({register fixnum _q1=(-fx);
         register object _q4;
         _q4=(!(((_q1)+(0x4000000000000000>>1))&-0x4000000000000000)) ?
           ((object)((_q1)+(0x8000000000000000 +(0x4000000000000000>>1)))) :
           make_fixnum1(_q1);
         _q4;}) :
       x);
  }
}


int
main(int argc,char * argv[]) {

  fixnum fx;
  union lu u;
  
  sscanf(argv[1],"%ld",&fx);
  u.FIX.FIXVAL=fx;
  
  printf("%p\n",baz(&u));

  return 0;

}
=============================================================================
File: tt.c
=============================================================================
#include <stdio.h>

#define fixnum long

struct fixn {
  fixnum d;
  fixnum FIXVAL;
};

union lu {
  struct fixn FIX;
};

typedef union lu *object;

object
fixnum_add(fixnum x,fixnum y) {
  static union lu u;
  u.FIX.FIXVAL=1;
  printf("add\n");
  return &u;
}

object
make_fixnum1(fixnum x) {
  static union lu u;
  u.FIX.FIXVAL=x;
  printf("make\n");
  return &u;
}
=============================================================================
Transcript:
=============================================================================
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -c -g 
-ffile-prefix-map=/home/camm/gcl-2.6.12=. -fstack-protector-strong -Wformat 
-Werror=format-security -fsigned-char -pipe -fcommon -fno-builtin-malloc 
-fno-builtin-free -fno-PIE -fno-pie -fno-PIC -fno-pic -Wall -Wno-empty-body 
-Wno-unused-but-set-variable  -I/usr/include/tirpc -pg -Wdate-time 
-D_FORTIFY_SOURCE=2 -O2 -I/home/camm/gcl-2.6.12/o -I../h -I../gcl-tk tt.c  
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -c -g 
-ffile-prefix-map=/home/camm/gcl-2.6.12=. -fstack-protector-strong -Wformat 
-Werror=format-security -fsigned-char -pipe -fcommon -fno-builtin-malloc 
-fno-builtin-free -fno-PIE -fno-pie -fno-PIC -fno-pic -Wall -Wno-empty-body 
-Wno-unused-but-set-variable  -I/usr/include/tirpc -pg -Wdate-time 
-D_FORTIFY_SOURCE=2 -O2 -I/home/camm/gcl-2.6.12/o -I../h -I../gcl-tk t.c  
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -Wl,-no-pie t.o tt.o -o t
(sid_amd64-dchroot)camm@barriere:~$ ./t -8874444426961747968
0x1b285c3000000000
(sid_amd64-dchroot)camm@barriere:~$ gcc-11 -c -g 
-ffile-prefix-map=/home/camm/gcl-2.6.12=. -fstack-protector-strong -Wformat 
-Werror=format-security -fsigned-char -pipe -fcommon -fno-builtin-malloc 
-fno-builtin-free -fno-PIE -fno-pie -fno-PIC -fno-pic -Wall -Wno-empty-body 
-Wno-unused-but-set-variable  -I/usr/include/tirpc -pg -Wdate-time 
-D_FORTIFY_SOURCE=2 -O2 -I/home/camm/gcl-2.6.12/o -I../h -I../gcl-tk t.c  
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -Wl,-no-pie t.o tt.o -o t
(sid_amd64-dchroot)camm@barriere:~$ ./t -8874444426961747968
make
0x404050
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -c -g 
-ffile-prefix-map=/home/camm/gcl-2.6.12=. -fstack-protector-strong -Wformat 
-Werror=format-security -fsigned-char -pipe -fcommon -fno-builtin-malloc 
-fno-builtin-free -fno-PIE -fno-pie -fno-PIC -fno-pic -Wall -Wno-empty-body 
-Wno-unused-but-set-variable  -I/usr/include/tirpc -pg -Wdate-time 
-D_FORTIFY_SOURCE=2 -O2 -I/home/camm/gcl-2.6.12/o -I../h -I../gcl-tk t.c  
(sid_amd64-dchroot)camm@barriere:~$ gcc-12 -Wl,-no-pie t.o tt.o -o t
(sid_amd64-dchroot)camm@barriere:~$ ./t -8874444426961747968
0x1b285c3000000000
=============================================================================

-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable')
merged-usr: no
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-19-amd64 (SMP w/4 CPU threads)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages gcc-12 depends on:
ii  binutils       2.39-8
ii  cpp-12         12.2.0-9
ii  gcc-12-base    12.2.0-9
ii  libc6          2.36-4
ii  libcc1-0       12.2.0-9
ii  libgcc-12-dev  12.2.0-9
ii  libgcc-s1      12.2.0-9
ii  libgmp10       2:6.2.1+dfsg1-1.1
ii  libisl23       0.25-1
ii  libmpc3        1.2.1-2
ii  libmpfr6       4.1.0-3
ii  libstdc++6     12.2.0-9
ii  libzstd1       1.5.2+dfsg-1
ii  zlib1g         1:1.2.13.dfsg-1

Versions of packages gcc-12 recommends:
ii  libc6-dev  2.36-4

Versions of packages gcc-12 suggests:
pn  gcc-12-doc       <none>
pn  gcc-12-locales   <none>
pn  gcc-12-multilib  <none>

-- no debconf information
-- 
Camm Maguire                                        camm@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah



reply via email to

[Prev in Thread] Current Thread [Next in Thread]