🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Ron Guilmette Tue, 31 Jan 1989 20:32
BUG in GCC & G++ 1.32 using -O & inline & narrowing implicit casts
#1673
Author: Ron Guilmette
Date: Tue, 31 Jan 1989 20:32
58 lines
2041 bytes
The following short program prints FAILED when compiled using either
GCC 1.32 or G++ 1.32.0 and (only) when the -O option is used.  This
occurs on a Sun3 with the following links:

	tm-sun3.h	=>	tm.h
	xm-m68k.h	=>	config.h
	m68k.md		=>	md
	output-m68k.c	=>	aux-output.c

I believe that this program also illustrates the need for warnings
(in both G++ and GCC) whenever a value of a given width is implicitly
cast to a value of a smaller width (e.g. int to short int).  Such
implicit casts can cause a loss of information, and they should be
flagged as dangerous via warnings.  It appears that even with -Wall,
such situations are not being flagged with warnings.

// Ron Guilmette  -  MCC  -  Experimental (parallel) Systems Kit Project
// 3500 West Balcones Center Drive,  Austin, TX  78759  -  (512)338-3740
// ARPA: rfg@mcc.com
// UUCP: {rutgers,uunet,gatech,ames,pyramid}!cs.utexas.edu!pp!rfg

/* ------------------------------------------------------------------------- */
/*
Description - check that when an int value is assigned to a short int,
		the proper half of the int (i.e. the low order half) ends
		up in the short.

		This fails with 1.32.0 if -O is used and f1() is inline.

		Workaround - declare "f1_arg" as type "short int".
*/

short int v2;

int v1 = 0x11117777;

inline void f1 (int f1_arg)
{
	v2 = f1_arg;
}

void test()
{
	f1 (v1);
	if (v2 != 0x00007777) {
		printf ("v2 = 0x%08x\n", v2);
		printf ("FAILED - assignment of int to short does not work right\n");
		exit (0);
	}
}

main()
{
	test ();
	printf ("PASSED\n");
	exit (0);
}
BUG in GCC & G++ 1.32 using -O & inline & narrowing implicit casts
#1674
Author: Paul Hudson
Date: Wed, 01 Feb 1989 08:55
12 lines
952 bytes
The warning that Ron Guilmette wants (implicit narrowing) is on my list to
do, so if the FSF aren't going to do it, and I find time ;-) it will appear
eventually.

As before, suggestions of futher warnings welcome.
Paul Hudson 

Snail mail: Monotype ADG	Email:	...!ukc!acorn!moncam!paul
	    Science Park,		paul@moncam.co.uk
	    Milton Road,	"Sun Microsysytems:
	    Cambridge,		 The Company is Arrogant (TM)"
	    CB4 4FQ
Re: BUG in GCC & G++ 1.32 using -O & inline & narrowing implicit casts
#1669
Author: Doug Schmidt
Date: Fri, 03 Feb 1989 04:05
41 lines
1882 bytes
In article <8902010855.AA06237@marvin.moncam.uucp> mcvax!moncam!paul@UUNET.UU.NET (Paul Hudson) writes:
++
++As before, suggestions of futher warnings welcome.
++Paul Hudson 
++

Here's a useful warning we could use in gcc and g++, given that it is now
possible to declare ``const'' functions (read gcc.texinfo for gcc 1.33
for details).

Imagine the following perverse program:

----------------------------------------
int external = 10;

int bar () {
   external++;        
}

const int foo (int *i) {
   bar();
   return (external = *i = 10);
}

void main () {
   external = foo(&external) + external;
}
----------------------------------------

Function foo violates just about all the restrictions on const
functions, since it references global variables, changes its
parameters, and calls a non-const function.  However, gcc doesn't
complain about this, yet.  It would be nice to have a -W option that
detected these transgressions.

Doug
--
schmidt@ics.uci.edu (ARPA) |   Per me si va nella citta' dolente.
office: (714) 856-4043     |   Per me si va nell'eterno dolore.
                           |   Per me si va tra la perduta gente.
                           |   Lasciate ogni speranza o voi ch'entrate.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads