[PR rtl-optimization/115876] Fix one of two ubsan reported issues in new ext-dce...
[official-gcc.git] / gcc / testsuite / g++.dg / diagnostic / bad-binary-ops.C
blobebbf3001055dedff30ed36f85f10eb3d53c6100d
1 // { dg-options "-fdiagnostics-show-caret" }
3 // Adapted from https://gcc.gnu.org/wiki/ClangDiagnosticsComparison
5 typedef float __m128;
6 void test_1 ()
8   __m128 myvec[2];
9   int const *ptr;
10   myvec[1] / ptr; // { dg-error "invalid operands" }
12 /* { dg-begin-multiline-output "" }
13    myvec[1] / ptr;
14    ~~~~~~~~ ^ ~~~
15           |   |
16           |   const int*
17           __m128 {aka float}
18    { dg-end-multiline-output "" } */
21 struct s {};
22 struct t {};
23 extern struct s some_function (void);
24 extern struct t some_other_function (void);
26 int test_2 (void)
28   return (some_function ()
29           + some_other_function ()); // { dg-error "no match for .operator" }
31 /* { dg-begin-multiline-output "" }
32    return (some_function ()
33            ~~~~~~~~~~~~~~~~
34                          |
35                          s
36            + some_other_function ());
37            ^ ~~~~~~~~~~~~~~~~~~~~~~
38                                  |
39                                  t
40    { dg-end-multiline-output "" } */
43 int test_3 (struct s param_s, struct t param_t)
45   return param_s && param_t; // { dg-error "no match for .operator" }
47 /* { dg-begin-multiline-output "" }
48    return param_s && param_t;
49           ~~~~~~~ ^~ ~~~~~~~
50           |          |
51           s          t
52    { dg-end-multiline-output "" } */
53 /* { dg-begin-multiline-output "" }
54    return param_s && param_t;
55           ~~~~~~~~^~~~~~~~~~
56    { dg-end-multiline-output "" } */
59 namespace ns_4
61   struct s foo;
62   namespace inner {
63     struct t bar;
64   };
67 int test_4a (void)
69   return ns_4::foo && ns_4::inner::bar; // { dg-error "no match for .operator" }
70   /* { dg-begin-multiline-output "" }
71    return ns_4::foo && ns_4::inner::bar;
72           ~~~~~~~~~ ^~ ~~~~~~~~~~~~~~~~
73                 |                   |
74                 s                   t
75      { dg-end-multiline-output "" } */
77   /* { dg-begin-multiline-output "" }
78    return ns_4::foo && ns_4::inner::bar;
79           ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
80      { dg-end-multiline-output "" } */
83 int test_4b (void)
85   return ::ns_4::foo && ns_4::inner::bar; // { dg-error "no match for .operator" }
86   /* { dg-begin-multiline-output "" }
87    return ::ns_4::foo && ns_4::inner::bar;
88           ~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~~~
89                   |                   |
90                   s                   t
91      { dg-end-multiline-output "" } */
93   /* { dg-begin-multiline-output "" }
94    return ::ns_4::foo && ns_4::inner::bar;
95           ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
96      { dg-end-multiline-output "" } */