[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decc_bugs

Title:DEC C Problem Reporting Forum
Notice:Report DEC C++ problems in TURRIS::C_PLUS_PLUS
Moderator:CXXC::REPETETCHEON
Created:Fri Nov 13 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1299
Total number of notes:6249

1271.0. "Internet bug report" by STEVEN::hobbs (Steven Hobbs) Wed Mar 12 1997 18:19

A user on the internet has claimed that our latest DEC C on Unix no
longer compiles some sources he uses (unless he specifies -oldc).
Here is his newsgroup posting:


Article 20768 of comp.unix.osf.osf1:
From: Michel van der List <[email protected]>
Newsgroups: comp.unix.osf.osf1
Subject: cc problem on OSF 4.0B
Date: 12 Mar 1997 14:14:59 GMT
Organization: SmithKline Beecham Pharmaceuticals R & D, Bioinformatics
Lines: 21
Message-ID: <[email protected]>
NNTP-Posting-Host: phu967.um.us.sbphrd.com
Originator: [email protected]
Xref: nntpd.lkg.dec.com comp.unix.osf.osf1:20768

Hi there.

I've used Landon Curt Noll's calc program for while now. I've
never had any problems compiling it under OSF1, but as of
version 4.0B, I can't compile it anymore, unless I use the
-oldc flag. Also, gcc has no problems compiling this program.
The current version can be found at:

http://reality.sgi.com/chongo/calc/2.10.3t5.2.tgz

Any comments?

 a d v
Thanks a
 e c n        Michel
 
-- 
-------------------------------------------------------------------
Michel van der List        SmithKline Beecham Pharmaceuticals R & D
[email protected]    UW2230, 709 Swedeland Road, P.O. Box 1539 
(610) 270-4525             King of Prussia, PA  19406-0939


T.RTitleUserPersonal
Name
DateLines
1271.2Thanks, we'll take a look...DECC::SULLIVANJeff SullivanThu Mar 13 1997 11:1010
Joe Mario copied this off the 'net and sent me a pointer. I am able to reproduce
the problem here on Platinum.

We plan to investigate this and resolve it either as a bug in the compiler or
possibly in the source code. We'll post a reply here when we have more info.

Thanks for posting this. Resolving portability problems for Digital UNIX is a
very high priority.

-Jeff
1271.3Simplest reproducerDECC::SULLIVANJeff SullivanThu Mar 13 1997 12:3843
Here's the simplest reproducer for the zrand.c compilation failure. It appears
that there is a difference in the old-style token-pasting in compile vs.
preprocess-only modes. We get the same answer as ACC (cc -oldc) when
preprocessing only.

Ironically, DEC C does not get their expected result in -std1 (using the ANSI
token-pasting macro), since DEC C inserts the spaces in between the tokens.

% cat decc_bugs1271.c

#define U(x) ((unsigned long)x)
#define FULL int

# if defined(__STDC__) && __STDC__ != 0
#  define SVAL(a,b) (FULL)U(0x ## a ## b)
# else
#  define SVAL(a,b) (FULL)U(0x/**/a/**/b)
# endif

static int arr[] = {
  SVAL(23a252f6,0bae4907)
};

% cc -oldc -c decc_bugs1271.c
% cc -c decc_bugs1271.c      
cc: Warning: decc_bugs1271.c, line 12: Invalid token discarded.
  SVAL(23a252f6,0bae4907)
--^
cc: Warning: decc_bugs1271.c, line 12: Invalid token discarded.
  SVAL(23a252f6,0bae4907)
--^
cc: Warning: decc_bugs1271.c, line 12: Invalid token discarded.
  SVAL(23a252f6,0bae4907)
--^
cc: Error: decc_bugs1271.c, line 12: Invalid expression.
  SVAL(23a252f6,0bae4907)
--^


Still under investigation...

-Jeff

1271.4fixedDECC::PARKSThu Mar 13 1997 15:035
Thanks for the report.  I could go into details but I'll spare you.
I've fixed the problem.  When the tests finished running I'll check
the new code in.

\John
1271.5Fix expected in Platinum.minor and SteelDECC::SULLIVANJeff SullivanThu Mar 13 1997 15:459
We'll expect to get this fix into the next minor and major release after V4.0.
I have added a distilled test case as decc_bugs1271.c into our regression test
system.

Someone will need to reply to the news thread.
Is there a procedure or protocol for doing that "officially".

Thanks,
-Jeff
1271.6here's my reply to comp.unix.osf.osf1DECC::PARKSThu Mar 13 1997 15:5127
Hi Michel,

It was indeed a compiler problem.  The compiler refused to 
token-paste 0x to 23a252f6 in the SVAL macro.  Here's a distilled
testcase

    #define SVAL(a,b) 0x ## a ## b
    SVAL(23a252f6,0bae4907)

The compiler should expand the SVAL call to 0x23a252f60bae4907.
It didn't because it didn't like the leftmost operand (0x is not
a legitimate hex constant).  It shouldn't have cared.

The compiler bug is now fixed.  

A simple code workaround would be to rewrite 0x as 0x0.  It
should not change the numeric value.  Modifying the above 
testcase would yield

    #define SVAL(a,b) 0x0 ## a ## b
    SVAL(23a252f6,0bae4907)

Thanks for letting us know about the problem.  Hope the work-
around will help.  We can also point you to a fixed compiler
if you'd like.

\John