Article View: gnu.g++.bug
Article #1945BIG in G++ 1.35-.0- (b063)
From: Ron Guilmette
Date: Thu, 04 May 1989 15:43
Date: Thu, 04 May 1989 15:43
285 lines
19605 bytes
19605 bytes
In the following source file, errors are not properly flagged for attempts
to give default arguments within (binary) operator declaration formal argument
lists.
b063 had missed error(s) as follows:
11: int operator + (st st1, st st2 = st_object); // ERROR
12: int operator - (st st1, st st2 = st_object); // ERROR
13: int operator & (st st1, st st2 = st_object); // ERROR
14: int operator * (st st1, st st2 = st_object); // ERROR
16: int operator / (st st1, st st2 = st_object); // ERROR
17: int operator % (st st1, st st2 = st_object); // ERROR
18: int operator ^ (st st1, st st2 = st_object); // ERROR
19: int operator | (st st1, st st2 = st_object); // ERROR
20: int operator >> (st st1, st st2 = st_object); // ERROR
21: int operator << (st st1, st st2 = st_object); // ERROR
22: int operator && (st st1, st st2 = st_object); // ERROR
23: int operator || (st st1, st st2 = st_object); // ERROR
26: int operator == (st st1, st st2 = st_object); // ERROR
27: int operator != (st st1, st st2 = st_object); // ERROR
28: int operator < (st st1, st st2 = st_object); // ERROR
29: int operator > (st st1, st st2 = st_object); // ERROR
30: int operator <= (st st1, st st2 = st_object); // ERROR
31: int operator >= (st st1, st st2 = st_object); // ERROR
33: int operator = (st st1, st st2 = st_object); // ERROR
34: int operator += (st st1, st st2 = st_object); // ERROR
35: int operator -= (st st1, st st2 = st_object); // ERROR
36: int operator *= (st st1, st st2 = st_object); // ERROR
37: int operator /= (st st1, st st2 = st_object); // ERROR
38: int operator %= (st st1, st st2 = st_object); // ERROR
39: int operator ^= (st st1, st st2 = st_object); // ERROR
40: int operator &= (st st1, st st2 = st_object); // ERROR
41: int operator |= (st st1, st st2 = st_object); // ERROR
42: int operator >>= (st st1, st st2 = st_object); // ERROR
43: int operator <<= (st st1, st st2 = st_object); // ERROR
45: int operator [] (st st1, st st2 = st_object); // ERROR
47: int operator + (st st1 = st_object, st st2 = st_object); // ERROR
48: int operator - (st st1 = st_object, st st2 = st_object); // ERROR
49: int operator & (st st1 = st_object, st st2 = st_object); // ERROR
50: int operator * (st st1 = st_object, st st2 = st_object); // ERROR
52: int operator / (st st1 = st_object, st st2 = st_object); // ERROR
53: int operator % (st st1 = st_object, st st2 = st_object); // ERROR
54: int operator ^ (st st1 = st_object, st st2 = st_object); // ERROR
55: int operator | (st st1 = st_object, st st2 = st_object); // ERROR
56: int operator >> (st st1 = st_object, st st2 = st_object); // ERROR
57: int operator << (st st1 = st_object, st st2 = st_object); // ERROR
58: int operator && (st st1 = st_object, st st2 = st_object); // ERROR
59: int operator || (st st1 = st_object, st st2 = st_object); // ERROR
62: int operator == (st st1 = st_object, st st2 = st_object); // ERROR
63: int operator != (st st1 = st_object, st st2 = st_object); // ERROR
64: int operator < (st st1 = st_object, st st2 = st_object); // ERROR
65: int operator > (st st1 = st_object, st st2 = st_object); // ERROR
66: int operator <= (st st1 = st_object, st st2 = st_object); // ERROR
67: int operator >= (st st1 = st_object, st st2 = st_object); // ERROR
69: int operator = (st st1 = st_object, st st2 = st_object); // ERROR
70: int operator += (st st1 = st_object, st st2 = st_object); // ERROR
71: int operator -= (st st1 = st_object, st st2 = st_object); // ERROR
72: int operator *= (st st1 = st_object, st st2 = st_object); // ERROR
73: int operator /= (st st1 = st_object, st st2 = st_object); // ERROR
74: int operator %= (st st1 = st_object, st st2 = st_object); // ERROR
75: int operator ^= (st st1 = st_object, st st2 = st_object); // ERROR
76: int operator &= (st st1 = st_object, st st2 = st_object); // ERROR
77: int operator |= (st st1 = st_object, st st2 = st_object); // ERROR
78: int operator >>= (st st1 = st_object, st st2 = st_object); // ERROR
79: int operator <<= (st st1 = st_object, st st2 = st_object); // ERROR
81: int operator [] (st st1 = st_object, st st2 = st_object); // ERROR
84: int operator + (st st2 = st_object); // ERROR
85: int operator - (st st2 = st_object); // ERROR
86: int operator & (st st2 = st_object); // ERROR
87: int operator * (st st2 = st_object); // ERROR
89: int operator / (st st2 = st_object); // ERROR
90: int operator % (st st2 = st_object); // ERROR
91: int operator ^ (st st2 = st_object); // ERROR
92: int operator | (st st2 = st_object); // ERROR
93: int operator >> (st st2 = st_object); // ERROR
94: int operator << (st st2 = st_object); // ERROR
95: int operator && (st st2 = st_object); // ERROR
96: int operator || (st st2 = st_object); // ERROR
99: int operator == (st st2 = st_object); // ERROR
100: int operator != (st st2 = st_object); // ERROR
101: int operator < (st st2 = st_object); // ERROR
102: int operator > (st st2 = st_object); // ERROR
103: int operator <= (st st2 = st_object); // ERROR
104: int operator >= (st st2 = st_object); // ERROR
106: int operator = (st st2 = st_object); // ERROR
107: int operator += (st st2 = st_object); // ERROR
108: int operator -= (st st2 = st_object); // ERROR
109: int operator *= (st st2 = st_object); // ERROR
110: int operator /= (st st2 = st_object); // ERROR
111: int operator %= (st st2 = st_object); // ERROR
112: int operator ^= (st st2 = st_object); // ERROR
113: int operator &= (st st2 = st_object); // ERROR
114: int operator |= (st st2 = st_object); // ERROR
115: int operator >>= (st st2 = st_object); // ERROR
116: int operator <<= (st st2 = st_object); // ERROR
118: int operator [] (st st2 = st_object); // ERROR
b063: FAILED
---------------------------------------------------------------------------
// Check that it is illegal to declare binary operators with
// either one or two formal parameters which have default values.
// In particular, check the subscripting operator [].
struct st {
int member;
};
st st_object;
int operator + (st st1, st st2 = st_object); // ERROR
int operator - (st st1, st st2 = st_object); // ERROR
int operator & (st st1, st st2 = st_object); // ERROR
int operator * (st st1, st st2 = st_object); // ERROR
int operator / (st st1, st st2 = st_object); // ERROR
int operator % (st st1, st st2 = st_object); // ERROR
int operator ^ (st st1, st st2 = st_object); // ERROR
int operator | (st st1, st st2 = st_object); // ERROR
int operator >> (st st1, st st2 = st_object); // ERROR
int operator << (st st1, st st2 = st_object); // ERROR
int operator && (st st1, st st2 = st_object); // ERROR
int operator || (st st1, st st2 = st_object); // ERROR
// comparison operators (all 6)
int operator == (st st1, st st2 = st_object); // ERROR
int operator != (st st1, st st2 = st_object); // ERROR
int operator < (st st1, st st2 = st_object); // ERROR
int operator > (st st1, st st2 = st_object); // ERROR
int operator <= (st st1, st st2 = st_object); // ERROR
int operator >= (st st1, st st2 = st_object); // ERROR
int operator = (st st1, st st2 = st_object); // ERROR
int operator += (st st1, st st2 = st_object); // ERROR
int operator -= (st st1, st st2 = st_object); // ERROR
int operator *= (st st1, st st2 = st_object); // ERROR
int operator /= (st st1, st st2 = st_object); // ERROR
int operator %= (st st1, st st2 = st_object); // ERROR
int operator ^= (st st1, st st2 = st_object); // ERROR
int operator &= (st st1, st st2 = st_object); // ERROR
int operator |= (st st1, st st2 = st_object); // ERROR
int operator >>= (st st1, st st2 = st_object); // ERROR
int operator <<= (st st1, st st2 = st_object); // ERROR
int operator [] (st st1, st st2 = st_object); // ERROR
int operator + (st st1 = st_object, st st2 = st_object); // ERROR
int operator - (st st1 = st_object, st st2 = st_object); // ERROR
int operator & (st st1 = st_object, st st2 = st_object); // ERROR
int operator * (st st1 = st_object, st st2 = st_object); // ERROR
int operator / (st st1 = st_object, st st2 = st_object); // ERROR
int operator % (st st1 = st_object, st st2 = st_object); // ERROR
int operator ^ (st st1 = st_object, st st2 = st_object); // ERROR
int operator | (st st1 = st_object, st st2 = st_object); // ERROR
int operator >> (st st1 = st_object, st st2 = st_object); // ERROR
int operator << (st st1 = st_object, st st2 = st_object); // ERROR
int operator && (st st1 = st_object, st st2 = st_object); // ERROR
int operator || (st st1 = st_object, st st2 = st_object); // ERROR
// comparison operators (all 6)
int operator == (st st1 = st_object, st st2 = st_object); // ERROR
int operator != (st st1 = st_object, st st2 = st_object); // ERROR
int operator < (st st1 = st_object, st st2 = st_object); // ERROR
int operator > (st st1 = st_object, st st2 = st_object); // ERROR
int operator <= (st st1 = st_object, st st2 = st_object); // ERROR
int operator >= (st st1 = st_object, st st2 = st_object); // ERROR
int operator = (st st1 = st_object, st st2 = st_object); // ERROR
int operator += (st st1 = st_object, st st2 = st_object); // ERROR
int operator -= (st st1 = st_object, st st2 = st_object); // ERROR
int operator *= (st st1 = st_object, st st2 = st_object); // ERROR
int operator /= (st st1 = st_object, st st2 = st_object); // ERROR
int operator %= (st st1 = st_object, st st2 = st_object); // ERROR
int operator ^= (st st1 = st_object, st st2 = st_object); // ERROR
int operator &= (st st1 = st_object, st st2 = st_object); // ERROR
int operator |= (st st1 = st_object, st st2 = st_object); // ERROR
int operator >>= (st st1 = st_object, st st2 = st_object); // ERROR
int operator <<= (st st1 = st_object, st st2 = st_object); // ERROR
int operator [] (st st1 = st_object, st st2 = st_object); // ERROR
struct base {
int operator + (st st2 = st_object); // ERROR
int operator - (st st2 = st_object); // ERROR
int operator & (st st2 = st_object); // ERROR
int operator * (st st2 = st_object); // ERROR
int operator / (st st2 = st_object); // ERROR
int operator % (st st2 = st_object); // ERROR
int operator ^ (st st2 = st_object); // ERROR
int operator | (st st2 = st_object); // ERROR
int operator >> (st st2 = st_object); // ERROR
int operator << (st st2 = st_object); // ERROR
int operator && (st st2 = st_object); // ERROR
int operator || (st st2 = st_object); // ERROR
// comparison operators (all 6)
int operator == (st st2 = st_object); // ERROR
int operator != (st st2 = st_object); // ERROR
int operator < (st st2 = st_object); // ERROR
int operator > (st st2 = st_object); // ERROR
int operator <= (st st2 = st_object); // ERROR
int operator >= (st st2 = st_object); // ERROR
int operator = (st st2 = st_object); // ERROR
int operator += (st st2 = st_object); // ERROR
int operator -= (st st2 = st_object); // ERROR
int operator *= (st st2 = st_object); // ERROR
int operator /= (st st2 = st_object); // ERROR
int operator %= (st st2 = st_object); // ERROR
int operator ^= (st st2 = st_object); // ERROR
int operator &= (st st2 = st_object); // ERROR
int operator |= (st st2 = st_object); // ERROR
int operator >>= (st st2 = st_object); // ERROR
int operator <<= (st st2 = st_object); // ERROR
int operator [] (st st2 = st_object); // ERROR
};
---------------------------------------------------------------------------
/usr/local/src/src/g++/build/sun3/1.35-.0-.0/g++ -B/usr/local/src/src/g++/build/sun3/1.35-.0-.0/ -Wall -Wwrite-strings -g -S -v b063.C
g++ version 1.35.0-.0
/usr/local/src/src/g++/build/sun3/1.35-.0-.0/cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -Wall -D__HAVE_68881__ -Dmc68020 b063.C /tmp/cca22995.cpp
GNU CPP version 1.35.0-.0
/usr/local/src/src/g++/build/sun3/1.35-.0-.0/c++ /tmp/cca22995.cpp -quiet -dumpbase b063.C -Wall -Wwrite-strings -noreg -version -G -o b063.s
GNU C++ version 1.35.0-.0 (68k, MIT syntax) compiled by GNU C version 1.34.1.
b063.C:81: warning: `int operator [] (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:79: warning: `int operator <<= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:78: warning: `int operator >>= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:77: warning: `int operator |= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:76: warning: `int operator &= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:75: warning: `int operator ^= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:74: warning: `int operator %= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:73: warning: `int operator /= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:72: warning: `int operator *= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:71: warning: `int operator -= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:70: warning: `int operator += (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:69: warning: `int operator = (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:67: warning: `int operator >= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:66: warning: `int operator <= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:65: warning: `int operator > (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:64: warning: `int operator < (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:63: warning: `int operator != (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:62: warning: `int operator == (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:59: warning: `int operator || (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:58: warning: `int operator && (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:57: warning: `int operator << (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:56: warning: `int operator >> (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:55: warning: `int operator | (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:54: warning: `int operator ^ (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:53: warning: `int operator % (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:52: warning: `int operator / (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:50: warning: `int operator * (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:49: warning: `int operator & (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:48: warning: `int operator - (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:47: warning: `int operator + (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:81: warning: `int operator [] (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:79: warning: `int operator <<= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:78: warning: `int operator >>= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:77: warning: `int operator |= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:76: warning: `int operator &= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:75: warning: `int operator ^= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:74: warning: `int operator %= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:73: warning: `int operator /= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:72: warning: `int operator *= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:71: warning: `int operator -= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:70: warning: `int operator += (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:69: warning: `int operator = (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:67: warning: `int operator >= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:66: warning: `int operator <= (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:65: warning: `int operator > (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:64: warning: `int operator < (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:63: warning: `int operator != (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:62: warning: `int operator == (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:59: warning: `int operator || (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:58: warning: `int operator && (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:57: warning: `int operator << (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:56: warning: `int operator >> (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:55: warning: `int operator | (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:54: warning: `int operator ^ (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:53: warning: `int operator % (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:52: warning: `int operator / (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:50: warning: `int operator * (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:49: warning: `int operator & (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:48: warning: `int operator - (struct st (= st_object ), struct st (= st_object ))' defined but not used
b063.C:47: warning: `int operator + (struct st (= st_object ), struct st (= st_object ))' defined but not used
Technical Details
Message-ID:
<8905041543.AA23103@riunite.aca.mcc.com>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!rutgers!tut.cis.ohio-state.edu!MCC.COM!rfgShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!rutgers!tut.cis.ohio-state.edu!MCC.COM!rfg From: rfg@MCC.COM (Ron Guilmette) Newsgroups: gnu.g++.bug Subject: BIG in G++ 1.35-.0- (b063) Message-ID: <8905041543.AA23103@riunite.aca.mcc.com> Date: 4 May 89 15:43:07 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 285