🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Ron Guilmette Sun, 25 Jun 1989 21:34
BUG in G++ 1.35.0/sun3
#77
Author: Ron Guilmette
Date: Sun, 25 Jun 1989 21:34
64 lines
2951 bytes
The following code fails to elicit an error on line 31 from
G++ 1.35.0/sun3.  Also, the error messages that *are* issued
are sometimes misleading because this code (obviously) involves no
"variable-size" objects.

----------------------------------------------------------------------------
// Check that a constant integer expression (which may include declared
// constant objects) cannot be used in contexts which require a static
// integer constant expression if any of the declared integer constant
// objects only have tenative declarations, and not value definitions.
//
// Cases:
//	array length specifications
//	bitfield length specifications

extern const int k2;		// tenative declaration
const int k4;			// tenative declaration
const int k8;			// tenative declaration

char global_array[((k2+7)*k4)/(k8-1)];			// ERROR

struct base
{
	char member_array[((k2+7)*k4)/(k8-1)];		// ERROR
	unsigned int	bit_field_1:k2;			// ERROR
	unsigned int	bit_field_2:k2+k4;		// ERROR
	unsigned int	bit_field_3:7+k4;		// ERROR
	unsigned int	bit_field_4:7+(k4+k2);		// ERROR
	unsigned int	bit_field_5:(3+k4);		// ERROR
};

base global_base_object;

int main ()
{
	base local_base_object;
	char local_array[((k2+7)*k4)/(k8-1)];		// ERROR - missed

	local_array[0] = 'x';
	local_base_object.bit_field_5 = 0x7f;
	return 0;
}

const int k4 = 4;
const int k8 = 8;
----------------------------------------------------------------------------
g++-1.35.0.0 -g -Wall -Wwrite-strings -v -S b077.C
g++ version 1.35.0
 /usr/local/src/lib/sun3/g++-1.35.0.0/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -Wall -D__HAVE_68881__ -Dmc68020 b077.C /tmp/cca20716.cpp
GNU CPP version 1.35
 /usr/local/src/lib/sun3/g++-1.35.0.0/gcc-cc1plus /tmp/cca20716.cpp -quiet -dumpbase b077.C -Wall -Wwrite-strings -noreg -version -G -o b077.s
GNU C++ version 1.35.0 (68k, MIT syntax) compiled by GNU C version 1.35.
b077.C:14: variable-size type declared outside of any function
b077.C:18: variable-size type declared outside of any function
b077.C:19: structure field `bit_field_1' width not an integer constant
b077.C:20: structure field `bit_field_2' width not an integer constant
b077.C:21: structure field `bit_field_3' width not an integer constant
b077.C:22: structure field `bit_field_4' width not an integer constant
b077.C:23: structure field `bit_field_5' width not an integer constant


b077 had missed error(s) as follows:
	  31: 	char local_array[((k2+7)*k4)/(k8-1)];		// ERROR
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