@@ -208,9 +208,13 @@ class ExcludedCases {
208
208
209
209
extern int random ();
210
210
constexpr int add (int x, int y) { return x + y; }
211
+ // Example with compile time constant literal value as default argument
211
212
constexpr int add1 (int x, int y = 1 ) { return x + y; }
213
+ // Example with compile time constant function call as default argument
212
214
constexpr int add2 (int x, int y = add(add1(1 ), 2)) { return x + y; }
215
+ // Example with non compile time constant function call as default argument
213
216
constexpr int add3 (int x, int y = random()) { return x + y; }
217
+ // Example with compile time constant literal value as default arguments
214
218
constexpr int add4 (int x = 1 , int y = 2 ) { return x + y; }
215
219
216
220
constexpr void fp_reported_in_466 (int p) {
@@ -224,24 +228,29 @@ constexpr void fp_reported_in_466(int p) {
224
228
z = p;
225
229
}
226
230
227
- int u = add (z, 2 ); // COMPLIANT
228
- int v = add (x, 2 ); // NON_COMPLIANT
229
- int w = add1 (x, 2 ); // NON_COMPLIANT
230
- int a = add1 (x); // NON_COMPLIANT
231
- int b = add1 (1 ); // NON_COMPLIANT
232
- int c = add1 (1 , z); // COMPLIANT
233
- int d = add1 (1 , z); // COMPLIANT
234
- int e = add1 (z); // COMPLIANT
235
- int f = add2 (1 ); // NON_COMPLIANT
236
- int g = add2 (1 , 2 ); // NON_COMPLIANT
237
- int h = add2 (x, 2 ); // NON_COMPLIANT
238
- int i = add2 (x, 2 ); // NON_COMPLIANT
239
- int j = add2 (z); // COMPLIANT
240
- int k = add2 (z, 1 ); // COMPLIANT
241
- int l = add3 (1 , 1 ); // NON_COMPLIANT
242
- int m = add3 (1 ); // COMPLIANT
243
- int n = add3 (1 , z); // COMPLIANT
244
- int o = add4 (); // NON_COMPLIANT
245
- int q = add4 (1 ); // NON_COMPLIANT
246
- int r = add4 (1 , z); // COMPLIANT
231
+ constexpr int t = add (1 , 2 ); // COMPLIANT
232
+
233
+ int u = add (z, 2 ); // COMPLIANT - z is not compile time constant on all paths
234
+ int v = add (t, 2 ); // NON_COMPLIANT
235
+ int w =
236
+ add1 (t, 2 ); // NON_COMPLIANT - all arguments are compile time constants
237
+ int a = add1 (t); // NON_COMPLIANT - s and the default value of the second
238
+ // argument are compile time constants
239
+ int b = add1 (1 ); // NON_COMPLIANT
240
+ int c = add1 (1 , z); // COMPLIANT - z is not compile time constant on all paths
241
+ int d = add1 (z); // COMPLIANT - z is not compile time constant on all paths
242
+ int e = add2 (1 ); // NON_COMPLIANT - provided argument and default value are
243
+ // compile time constants
244
+ int f = add2 (1 , 2 ); // NON_COMPLIANT
245
+ int g = add2 (t, 2 ); // NON_COMPLIANT
246
+ int h = add2 (z); // COMPLIANT - z is not compile time constant on all paths
247
+ int i = add2 (z, 1 ); // COMPLIANT - z is not compile time constant on all paths
248
+ int j = add3 (1 , 1 ); // NON_COMPLIANT
249
+ int k = add3 (1 ); // COMPLIANT - default value for second argument is not a
250
+ // compile time constant
251
+ int l = add3 (1 , z); // COMPLIANT - z is not compile time constant on all paths
252
+ int m = add4 (); // NON_COMPLIANT - default values are compile time constants
253
+ int n = add4 (1 ); // NON_COMPLIANT - default value for second argument is a
254
+ // compile time constant
255
+ int o = add4 (1 , z); // COMPLIANT - z is not compile time constant on all paths
247
256
}
0 commit comments