Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NCR C compiler complaints #3892

Closed
p5pRT opened this issue Apr 21, 2001 · 6 comments
Closed

NCR C compiler complaints #3892

p5pRT opened this issue Apr 21, 2001 · 6 comments

Comments

@p5pRT
Copy link

p5pRT commented Apr 21, 2001

Migrated from rt.perl.org#6859 (status was 'resolved')

Searchable as RT6859$

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2001

From chuck@nicolabanking.com

make SCREEN PRINT​:
  `sh cflags libperl.so toke.o` -KPIC toke.c
  CCCMD = /bin/cc -DPERL_CORE -c -I/usr/include -I/usr/ucbinclude
-I/usr/local/include -O
NCR High Performance C Compiler R3.0c
(c) Copyright 1994-97, NCR Corporation
(c) Copyright 1987-97, MetaWare Incorporated
w "toke.c",L462/C23(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L623/C10(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L1269/C20(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L1808/C7(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L2034/C10(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L2040/C10(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L2042/C26(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L2986/C23(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3208/C17(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3482/C8(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3482/C32(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3510/C8(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3811/C8(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3812/C8(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3820/C8(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3938/C55(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3972/C22(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L3994/C51(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L4007/C12(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L4157/C9(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L5907/C24(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L6358/C20(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L6430/C5(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L6672/C18(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L6776/C5(#257)​: '=' encountered where '==' may have been
intended.
w "toke.c",L5165​: Perl_yylex​: Global CSE elimination suppressed; function is
too big.
Memory exhausted (malloc returned 0)
While allocating 16000 byte chunk for pool live/dead vectors

Aborting(1)...
*** Error code 1 (bu21)

make​: fatal error.
$

MYCONFIG SCREEN PRINT​:
$ vi myconfig
"myconfig" 37 lines, 1893 characters
#!/bin/sh

# This script is designed to provide a handy summary of the configuration
# information being used to build perl. This is especially useful if you
# are requesting help from comp.lang.perl.misc on usenet or via mail.

# Note that the text lines /^Summary of/ .. /^\s*$/ are copied into
Config.pm.
cat <<'!NO!SUBS!'
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration​:
  Platform​:
  osname=svr4.0, osvers=3.0, archname=3426-svr4.0
  uname='nbs3426 nbs3426 4.0 3.0 3426 pentium ii(tm)-isapci '
  config_args='-dsE'
  hint=recommended, useposix=true, d_sigaction=define
  usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=unde
f
  useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
  use64bitint=undef use64bitall=undef uselongdouble=undef
  Compiler​:
  cc='/bin/cc', ccflags ='-I/usr/include -I/usr/ucbinclude
-I/usr/local/includ
e',
  optimize='-O',
  cppflags='-I/usr/include -I/usr/ucbinclude -I/usr/local/include'
  ccversion='', gccversion='', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize
=4
  alignbytes=4, usemymalloc=y, prototype=define
  Linker and Libraries​:
  ld='/bin/cc', ldflags ='-L/usr/ccs/lib -L/usr/ucblib -L/usr/local/lib
-L/usr
/gnu/lib'
  libpth=/usr/local/lib /usr/gnu/lib /lib /usr/lib /usr/ccs/lib
/usr/ucblib
  libs=-lsocket -lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lucb -lx
  perllibs=-lsocket -lnsl -ldl -lld -lm -lc -lcrypt -lucb -lx
  libc=, so=so, useshrplib=true, libperl=libperl.so
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
  cccdlflags='-KPIC', lddlflags='-G -L/usr/ccs/lib -L/usr/ucblib
-L/usr/local/
lib -L/usr/gnu/lib'

!NO!SUBS!

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2001

From @nwc10

    \`sh  cflags libperl\.so toke\.o\` \-KPIC toke\.c
      CCCMD =  /bin/cc \-DPERL\_CORE \-c \-I/usr/include \-I/usr/ucbinclude

-I/usr/local/include -O

w "toke.c",L5165​: Perl_yylex​: Global CSE elimination suppressed; function is
too big.
Memory exhausted (malloc returned 0)
While allocating 16000 byte chunk for pool live/dead vectors

Aborting(1)...
*** Error code 1 (bu21)

optimize='\-O'\,

It seems you still have the optimiser flags in.

I think (this is from memory, but hopefully is correct) in your existing
configured build directory your best bet is to

1​: edit config.sh. Find the line optimize='-O' and change it to
  optimize=''
2​: ./Configure -S
  to rebuild the Makefile and other files which depend on the settings in
  config.sh
3​: rerun make.

Hopefully your compiler line will then be​:

  `sh cflags libperl.so toke.o` -KPIC toke.c
  CCCMD = /bin/cc -DPERL_CORE -c -I/usr/include -I/usr/ucbinclude
-I/usr/local/include

(ie that -O at the end is gone)

You'll end up with a perl built with no optimisation, which might be slower
that you would like.

A better but more involved solution would be to see if your compiler's
documentation gives any clues on which flags to use to tune its behaviour;
either by turning off all Global CSE (which the compiler appears to be
reporting is where it's hitting its limits) or by telling it exactly how
large a buffer to allocate for Global CSE (so that it doesn't attempt to
do what it's currently doing, and allocate a buffer that exhausts memory)

I have no idea how to do that, but believe that some compilers let you do
this sort of thing.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Apr 21, 2001

From @jhi

An alternative to this is to turn off the optimization only on the toke.c.
rm config.sh and re-Configure with an additional parameter​:

  ./Configure -de -Dtoke_cflags='optimize=""' ...

This should remove optimization from only the toke.c

A better but more involved solution would be to see if your compiler's
documentation gives any clues on which flags to use to tune its behaviour;
either by turning off all Global CSE (which the compiler appears to be
reporting is where it's hitting its limits) or by telling it exactly how
large a buffer to allocate for Global CSE (so that it doesn't attempt to
do what it's currently doing, and allocate a buffer that exhausts memory)

I have no idea how to do that, but believe that some compilers let you do
this sort of thing.

Yes, many compilers have an option like that, -Olimit N or -Omaxmem=N
or something of the sort.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Apr 22, 2001

From @doughera88

An alternative to this is to turn off the optimization only on the toke.c.
rm config.sh and re-Configure with an additional parameter​:

\./Configure \-de \-Dtoke\_cflags='optimize=""' \.\.\.

This should remove optimization from only the toke.c

Normally, this is a good idea, but for NCR MP-RAS you also need to turn
off the optimizer for reg*.c, or else regular expressions won't work.
The first symptom of that will be a very puzzling failure to correctly
build DynaLoader.

Your best bet here is to turn off the optimizer all around. See the
section =item Optimizer in the INSTALL file for details.

@p5pRT
Copy link
Author

p5pRT commented May 6, 2001

From [Unknown Contact. See original ticket]

Thanks for your suggestions anyway.

@p5pRT
Copy link
Author

p5pRT commented Apr 12, 2010

@chorny - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant