source: tests/init1.cfa@ 4be0117

Last change on this file since 4be0117 was 2853d6f, checked in by Michael Brooks <mlbrooks@…>, 8 months ago

Remove uses of warnings to show test success. Eliminate simple causes of other warnings from affected tests and remove the result from WFLAG_OPT_LAX.

Many affected tests also formerly used -fsyntax-only to avoid errors at later compilation stages, or at runtime. Repair such tests to actually work though runtime, and remove them from SYNTAX_ONLY_CODE.

Group tests listed under WFLAGS_OPT according to why they should receive lax treatment. Add reason WFLGAS_OPT_LAX_EXPECT_WARN and give the original list reason WFLGAS_OPT_LAX_TO_INVESTIGATE.

Tests whose purpose is to show a warning are listed as both SYNTAX_ONLY_CODE (so that the warning is the output) and WFLGAS_OPT_LAX_EXPECT_WARN (to document this fact).

  • Property mode set to 100644
File size: 2.5 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2020 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// init1.cfa -- tests of initializing pointer- and reference-typed variables and returns
8//
9// Author : Michael Brooks
10// Created On : Thu Jul 16 22:00:00 2020
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Sat Jun 5 10:06:57 2021
13// Update Count : 9
14//
15
16void f() {
17
18 //
19 // setup
20 //
21
22 float x = 3.14;
23
24 float & rx = x;
25 float * px = &x;
26
27 const float & crx = x;
28 const float * cpx = &x;
29
30 //
31 // sound initializations
32 //
33
34 char * str1 = "hi"; (void) str1;
35 const char * str2 = "hi"; (void) str2;
36
37 float & rx2 = rx; (void) rx2;
38 float * px2 = px; (void) px2;
39
40 const float & crx2 = crx; (void) crx2;
41 const float * cpx2 = cpx; (void) cpx2;
42
43 // FIX ME: Code gen not producing correct cast.
44#pragma GCC diagnostic push
45#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
46 int (* fp)( int ) = 0p;
47 fp = 0p;
48#pragma GCC diagnostic pop
49
50 //
51 // unsound initializations
52 //
53
54 #ifdef ERR1
55 // mismatched referenced type
56 int & ry = rx;
57 int * py = px;
58
59 // would discard refered constness (same float is referenced)
60 float & ry2 = crx;
61 float * py2 = cpx;
62 #endif // ERR1
63}
64
65//
66// sound returns
67//
68
69char * f_str1() {
70 return "hi";
71}
72
73const char * f_str2() {
74 return "hi";
75}
76
77float & f_rx2 () {
78 float & rx = *0p;
79 return rx;
80}
81
82float * f_px2 () {
83 float * px = 0p;
84 return px;
85}
86
87const float & f_crx2 () {
88 float & rx = *0p;
89 return rx;
90}
91
92const float * f_cpx2 () {
93 float * px = 0p;
94 return px;
95}
96
97//
98// unsound returns
99//
100
101#ifdef ERR1
102int & f_ry() {
103 float & rx = *0p;
104 return rx; // mismatched referenced type
105}
106
107int * f_py() {
108 float * px = 0p;
109 return px; // mismatched referenced type
110}
111
112float & f_ry2() {
113 const float & crx = *0p;
114 return crx; // would discard refered constness (same float is referenced)
115}
116
117float * f_py2() {
118 const float * cpx = 0p;
119 return cpx; // would discard refered constness (same float is referenced)
120}
121
122forall (T &, S &)
123T & anycvt( S & s ) {
124 return s; // mismatched referenced type
125}
126
127forall (T &, S &)
128T * anycvt( S * s ) {
129 return s; // mismatched referenced type
130}
131#endif // ERR1
132
133int main() {
134 printf("done\n");
135}
Note: See TracBrowser for help on using the repository browser.