blob: b27ca80fd95a2a1ceeda845dcac2107c9df7600e [file] [log] [blame]
Zhi Zhuang37fb8602020-06-22 10:20:42 -07001// RUN: %clang_cc1 -triple avr -fsyntax-only -verify %s
2
3void test(int x, double p) { // expected-note {{declared here}}
4 bool dummy = false;
5 dummy = __builtin_expect_with_probability(x > 0, 1, 0.9);
6 dummy = __builtin_expect_with_probability(x > 0, 1, 1.1); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
7 dummy = __builtin_expect_with_probability(x > 0, 1, -1); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
Richard Smithf7f2e422020-10-13 10:03:02 -07008 dummy = __builtin_expect_with_probability(x > 0, 1, p); // expected-error {{probability argument to __builtin_expect_with_probability must be constant floating-point expression}} expected-note {{function parameter 'p' with unknown value}}
David Blaikieaee49252021-10-14 14:52:47 -07009 dummy = __builtin_expect_with_probability(x > 0, 1, "aa"); // expected-error {{cannot initialize a parameter of type 'double' with an lvalue of type 'const char[3]'}}
Zhi Zhuang37fb8602020-06-22 10:20:42 -070010 dummy = __builtin_expect_with_probability(x > 0, 1, __builtin_nan("")); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
11 dummy = __builtin_expect_with_probability(x > 0, 1, __builtin_inf()); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
12 dummy = __builtin_expect_with_probability(x > 0, 1, -0.0);
13 dummy = __builtin_expect_with_probability(x > 0, 1, 1.0 + __DBL_EPSILON__); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
14 dummy = __builtin_expect_with_probability(x > 0, 1, -__DBL_DENORM_MIN__); // expected-error {{probability argument to __builtin_expect_with_probability is outside the range [0.0, 1.0]}}
15}