@@ -208,9 +208,13 @@ class ExcludedCases {
208208
209209extern int random ();
210210constexpr int add (int x, int y) { return x + y; }
211+ // Example with compile time constant literal value as default argument
211212constexpr int add1 (int x, int y = 1 ) { return x + y; }
213+ // Example with compile time constant function call as default argument
212214constexpr 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
213216constexpr int add3 (int x, int y = random()) { return x + y; }
217+ // Example with compile time constant literal value as default arguments
214218constexpr int add4 (int x = 1 , int y = 2 ) { return x + y; }
215219
216220constexpr void fp_reported_in_466 (int p) {
@@ -224,24 +228,29 @@ constexpr void fp_reported_in_466(int p) {
224228 z = p;
225229 }
226230
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
247256}
0 commit comments