This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c/2782: HPUX: g77 3.0 (pre) regression caused by C90 bool args



>Number:         2782
>Category:       c
>Synopsis:       HPUX: g77 3.0 (pre) regression caused by C90 bool args
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 08 19:56:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     rbrown64@csc.com.au
>Release:        3.0 20010507 (prerelease)
>Organization:
>Environment:
hppa2.0-hp-hpux10.20, hppa1.1-hp-hpux11.00
>Description:
HPUX testsuite results after
2001-03-15  Zack Weinberg  <zackw@stanford.edu>

        * proj.h, intdoc.c: Delete 'bool' type. Don't include
        stddef.h here.
        * com.c: Rename variables named 'true' and/or 'false'.

have had FAILs for g77.f-torture/compile/alpha1.f
which is a regression since 2.95.2.
It appears that in the one case where f/stc.c:ffestc_decl_item
is called with TRUE as the last argument, it appears as false.
--
stb.c:  ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
stb.c-          ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
stb.c-          ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
stb.c-                  TRUE);
--
...
--
stc.c:ffestc_decl_item (ffelexToken name, ffebld kind, ffelexToken kindt,
stc.c-  ffesttDimList dims, ffebld len, ffelexToken lent, ffebld init,
stc.c-          ffelexToken initt, bool clist)
stc.c-{
--

Reported previously as <http://gcc.gnu.org/ml/gcc-bugs/2001-04/msg00437.html>
>How-To-Repeat:
# Smaller testcase

$ cat - > tmp.f
      INTEGER J(1)/0/
C
      END
$ g77 -v -c -o tmp.o tmp.f
g77 version 2.95.2 19991024 (release) (from FSF-g77 version 0.5.25 19991024 (rel
ease))
Reading specs from /usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/2.95.2/f771 tmp.f -quiet -dumpbase 
tmp.f -version -fversion -o /var/tmp/cchIrIXb.s
GNU F77 version 2.95.2 19991024 (release) (hppa2.0-hp-hpux10.20) compiled by GNU
 C version 2.95.2 19991024 (release).
GNU Fortran Front End version 0.5.25 19991024 (release)
 /usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/2.95.2/as -o tmp.o /var/tmp/cchIrIX
b.s
$ ../g77 -B../ -v -o tmp.o tmp.f
g77 version 3.0 20010507 (prerelease) (Fortran Frontend version 0.5.26 20010507 
(experimental))
Driving: ../g77 -B../ -v -o tmp.o tmp.f -lg2c -lm
Reading specs from ../specs
Configured with: ../gcc-20010507/configure --with-gnu-as
Thread model: single
gcc version 3.0 20010507 (prerelease)
 ../f771 tmp.f -quiet -dumpbase tmp.f -version -o /var/tmp/ccA29Qsm.s
GNU F77 version 3.0 20010507 (prerelease) (hppa2.0-hp-hpux10.20)
        compiled by GNU C version 3.0 20010507 (prerelease).
tmp.f: In program `MAIN__':
tmp.f:1:
         INTEGER J(1)/0/
                      ^
Too many initial values in list of initializers starting at (^)

# C90 bool testcase

$ ../xgcc -B../ -v -g -o tmpch2 ~/tmpch2.c
Reading specs from ../specs
Configured with: ../gcc-20010507/configure --with-gnu-as
...
GNU C version 3.0 20010507 (prerelease) (hppa2.0-hp-hpux10.20)
$ /devel/span/rdb/src/gdb-4.95.1.obj/gdb/gdb tmpch2
GNU gdb 4.95.1
Copyright 2000 Free Software Foundation, Inc.
...
This GDB was configured as "hppa2.0-hp-hpux10.20"...
...
(gdb) l 1
1       #define DECL_T(type, type_name) \
2       void test_##type_name( \
3          type a, type b, type c, type d, type e, type f, type g, type h, \
4          type i, type j, type k, type l, type m, type n, type o, type p)
5
6       DECL_T(_Bool, _Bool)
7       {
8         if (0
9         || a != 1 || b != 0 || c != 1 || d != 0
10       || e != 1 || f != 0 || g != 1 || h != 0
11       || i != 1 || j != 0 || k != 1 || l != 0
12       || m != 1 || n != 0 || o != 1 || p != 0)
13              abort();
14      }
15
16      DECL_T(unsigned char, uchar)
17      {
18       if (0
19       || a != 'a' || b != 'b' || c != 'c' || d != 'd'
20       || e != 'e' || f != 'f' || g != 'g' || h != 'h'
(gdb) b 13
Breakpoint 1 at 0x32a4: file /user/rand/pms71504/tmpch2.c, line 13.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /devel/span/rdb/src/gcc-20010507.obj/gcc/testsuite/tmpch2
...

Breakpoint 1, test__Bool (a=true, b=false, c=true, d=false, e=false, f=false,
    g=false, h=false, i=false, j=false, k=false, l=false, m=false, n=false,
    o=false, p=false) at /user/rand/pms71504/tmpch2.c:13
13              abort();
(gdb) up 1
#1  0x3b74 in main () at /user/rand/pms71504/tmpch2.c:70
70       test__Bool(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0);

Looking at the assembler it appears that bool values are
being loaded and stored from the most-significant byte
of a 32-bit stack slot or local not the least-significant.
Comparing against unsigned char, bool values seem to be
using 32-bit temporaries instead of 8-bit ones.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="tmpch2.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tmpch2.c"

I2RlZmluZSBERUNMX1QodHlwZSwgdHlwZV9uYW1lKQlcCnZvaWQgdGVzdF8jI3R5cGVfbmFtZSgg
XAogICAgdHlwZSBhLCB0eXBlIGIsIHR5cGUgYywgdHlwZSBkLCB0eXBlIGUsIHR5cGUgZiwgdHlw
ZSBnLCB0eXBlIGgsIFwKICAgIHR5cGUgaSwgdHlwZSBqLCB0eXBlIGssIHR5cGUgbCwgdHlwZSBt
LCB0eXBlIG4sIHR5cGUgbywgdHlwZSBwKQoKREVDTF9UKF9Cb29sLCBfQm9vbCkKewogICBpZiAo
MAogICB8fCBhICE9IDEgfHwgYiAhPSAwIHx8IGMgIT0gMSB8fCBkICE9IDAKICAgfHwgZSAhPSAx
IHx8IGYgIT0gMCB8fCBnICE9IDEgfHwgaCAhPSAwCiAgIHx8IGkgIT0gMSB8fCBqICE9IDAgfHwg
ayAhPSAxIHx8IGwgIT0gMAogICB8fCBtICE9IDEgfHwgbiAhPSAwIHx8IG8gIT0gMSB8fCBwICE9
IDApCglhYm9ydCgpOwp9CgpERUNMX1QodW5zaWduZWQgY2hhciwgdWNoYXIpCnsKICAgaWYgKDAK
ICAgfHwgYSAhPSAnYScgfHwgYiAhPSAnYicgfHwgYyAhPSAnYycgfHwgZCAhPSAnZCcKICAgfHwg
ZSAhPSAnZScgfHwgZiAhPSAnZicgfHwgZyAhPSAnZycgfHwgaCAhPSAnaCcKICAgfHwgaSAhPSAn
aScgfHwgaiAhPSAnaicgfHwgayAhPSAnaycgfHwgbCAhPSAnbCcKICAgfHwgbSAhPSAnbScgfHwg
biAhPSAnbicgfHwgbyAhPSAnbycgfHwgcCAhPSAncCcpCglhYm9ydCgpOwp9CgpERUNMX1Qoc2ln
bmVkIGNoYXIsIHNjaGFyKQp7CiAgIGlmICgwCiAgIHx8IGEgIT0gJ2EnIHx8IGIgIT0gJ2InIHx8
IGMgIT0gJ2MnIHx8IGQgIT0gJ2QnCiAgIHx8IGUgIT0gJ2UnIHx8IGYgIT0gJ2YnIHx8IGcgIT0g
J2cnIHx8IGggIT0gJ2gnCiAgIHx8IGkgIT0gJ2knIHx8IGogIT0gJ2onIHx8IGsgIT0gJ2snIHx8
IGwgIT0gJ2wnCiAgIHx8IG0gIT0gJ20nIHx8IG4gIT0gJ24nIHx8IG8gIT0gJ28nIHx8IHAgIT0g
J3AnKQoJYWJvcnQoKTsKfQoKREVDTF9UKHVuc2lnbmVkIHNob3J0LCB1c2hvcnQpCnsKICAgaWYg
KDAKICAgfHwgYSAhPSAnYScgfHwgYiAhPSAnYicgfHwgYyAhPSAnYycgfHwgZCAhPSAnZCcKICAg
fHwgZSAhPSAnZScgfHwgZiAhPSAnZicgfHwgZyAhPSAnZycgfHwgaCAhPSAnaCcKICAgfHwgaSAh
PSAnaScgfHwgaiAhPSAnaicgfHwgayAhPSAnaycgfHwgbCAhPSAnbCcKICAgfHwgbSAhPSAnbScg
fHwgbiAhPSAnbicgfHwgbyAhPSAnbycgfHwgcCAhPSAncCcpCglhYm9ydCgpOwp9CgpERUNMX1Qo
c2lnbmVkIHNob3J0LCBzc2hvcnQpCnsKICAgaWYgKDAKICAgfHwgYSAhPSAnYScgfHwgYiAhPSAn
YicgfHwgYyAhPSAnYycgfHwgZCAhPSAnZCcKICAgfHwgZSAhPSAnZScgfHwgZiAhPSAnZicgfHwg
ZyAhPSAnZycgfHwgaCAhPSAnaCcKICAgfHwgaSAhPSAnaScgfHwgaiAhPSAnaicgfHwgayAhPSAn
aycgfHwgbCAhPSAnbCcKICAgfHwgbSAhPSAnbScgfHwgbiAhPSAnbicgfHwgbyAhPSAnbycgfHwg
cCAhPSAncCcpCglhYm9ydCgpOwp9CgppbnQgbWFpbigpCnsKICAgdGVzdF91Y2hhcigKICAgICAg
ICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLAogICAgICAgJ2knLCAnaics
ICdrJywgJ2wnLCAnbScsICduJywgJ28nLCAncCcpOwogICB0ZXN0X3NjaGFyKAogICAgICAgJ2En
LCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsCiAgICAgICAnaScsICdqJywgJ2sn
LCAnbCcsICdtJywgJ24nLCAnbycsICdwJyk7CiAgIHRlc3RfdXNob3J0KAogICAgICAgJ2EnLCAn
YicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsCiAgICAgICAnaScsICdqJywgJ2snLCAn
bCcsICdtJywgJ24nLCAnbycsICdwJyk7CiAgIHRlc3Rfc3Nob3J0KAogICAgICAgJ2EnLCAnYics
ICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsCiAgICAgICAnaScsICdqJywgJ2snLCAnbCcs
ICdtJywgJ24nLCAnbycsICdwJyk7CiAgIHRlc3RfX0Jvb2woMSwgMCwgMSwgMCwgMSwgMCwgMSwg
MCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCk7CiAgIGV4aXQoMCk7Cn0K


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]