annotate gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do assemble }
kono
parents:
diff changeset
2 // g++ 1.36.1 bug 900215_01
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 // g++ allows the definition of a type conversion operator `operator void'
kono
parents:
diff changeset
5 // for class types, but subsequently fails to generate calls (where needed)
kono
parents:
diff changeset
6 // for such type conversion operators.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 // Cfront 2.0 does generate such calls.
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 // The following program exits with status 0 when compiled with Cfront 2.0
kono
parents:
diff changeset
11 // but exits with status 1 when compiled with g++.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 // Cfront 2.0 passes this test.
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 // 4/27/94 (jason): The pre-San Diego working paper prohibits operator
kono
parents:
diff changeset
16 // void, so we can go back to just ignoring void values.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 // keywords: user-defined type conversion operators, void type, explicit casts
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 // 8/3/2000 (nathan): The std allows you to define such an op, but
kono
parents:
diff changeset
21 // it will never be called. [class.conv.fct]. Make it an unconditional warning.
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 // { dg-options "-Wconversion" }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 struct struct0 {
kono
parents:
diff changeset
26
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
27 operator void (); // { dg-warning "3:converting .struct0. to .void. will never use a type conversion operator" }
111
kono
parents:
diff changeset
28 };
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int exit_status = 1;
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 struct0::operator void ()
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 exit_status = 0;
kono
parents:
diff changeset
35 }
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 struct struct0 s0_object;
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 int test ()
kono
parents:
diff changeset
40 {
kono
parents:
diff changeset
41 (void) s0_object;
kono
parents:
diff changeset
42 return exit_status;
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 int main () { return test (); }