PR middle-end/85602 - -Wsizeof-pointer-memaccess for strncat with size of source
[official-gcc.git] / gcc / testsuite / gcc.dg / pr69554-1.c
blob07ad0db7cf6d4245cca4e44f71363305dd8d57bd
1 /* { dg-options "-fdiagnostics-show-caret" } */
3 /* Various versions of the same C error, with a variety of line spacing,
4 and of columns, to exercise the line-span handling in
5 diagnostic-show-locus.c (PR other/69554). */
7 /* All on one line. */
9 int test_1 (const char *p, const char *q)
11 return (p + 1) + (q + 1); /* { dg-error "invalid operands" } */
12 /* { dg-begin-multiline-output "" }
13 return (p + 1) + (q + 1);
14 ~~~~~~~ ^ ~~~~~~~
15 { dg-end-multiline-output "" } */
18 /* On separate lines, but without intervening lines.
19 This can be printed as a single span of lines. */
21 int test_2 (const char *p, const char *q)
23 return (p + 1)
24 + /* { dg-error "invalid operands" } */
25 (q + 1);
26 /* { dg-begin-multiline-output "" }
27 return (p + 1)
28 ~~~~~~~
31 (q + 1);
32 ~~~~~~~
33 { dg-end-multiline-output "" } */
36 /* On separate lines, with an intervening line between lines 1 and 2.
37 This is printed as 2 "spans" of lines, broken up by the intervening
38 line. */
40 int test_3 (const char *p, const char *q)
42 return (p + 1) /* { dg-locus "10" } */
44 + /* { dg-error "invalid operands" } */
45 (q + 1);
46 /* { dg-locus "12" "" { target *-*-* } "44" } */
47 /* { dg-begin-multiline-output "" }
48 return (p + 1)
49 ~~~~~~~
50 { dg-end-multiline-output "" } */
51 /* { dg-begin-multiline-output "" }
54 (q + 1);
55 ~~~~~~~
56 { dg-end-multiline-output "" } */
59 /* As above, but the intervening line is between lines 2 and 3,
60 so that the 2 spans are grouped the other way. */
62 int test_4 (const char *p, const char *q)
64 return (p + 1)
65 + /* { dg-error "invalid operands" } */
67 (q + 1); /* { dg-locus "14" } */
68 /* { dg-begin-multiline-output "" }
69 return (p + 1)
70 ~~~~~~~
73 { dg-end-multiline-output "" } */
74 /* { dg-begin-multiline-output "" }
75 (q + 1);
76 ~~~~~~~
77 { dg-end-multiline-output "" } */
80 /* On separate lines, with intervening lines.
81 This is printed as 3 "spans" of lines, each span being an
82 individual line. */
84 int test_5 (const char *p, const char *q)
86 return (p + 1) /* { dg-locus "10" } */
88 + /* { dg-error "invalid operands" } */
90 (q + 1); /* { dg-locus "14" } */
91 /* { dg-locus "12" "" { target *-*-* } "88" } */
92 /* { dg-begin-multiline-output "" }
93 return (p + 1)
94 ~~~~~~~
95 { dg-end-multiline-output "" } */
96 /* { dg-begin-multiline-output "" }
99 { dg-end-multiline-output "" } */
100 /* { dg-begin-multiline-output "" }
101 (q + 1);
102 ~~~~~~~
103 { dg-end-multiline-output "" } */
106 /* On separate lines, with numerous intervening lines.
107 This is printed as 3 "spans" of lines, each span being an
108 individual line. */
110 int test_6 (const char *p, const char *q)
112 return (p + 1) /* { dg-locus "10" } */
113 /* Lorem ipsum dolor sit amet, consectetur adipiscing elit.
114 Maecenas nisl sapien, rutrum non euismod et, rutrum ac felis.
115 Morbi nec nisi ipsum. Quisque pulvinar ante nec urna rhoncus,
116 a cursus nisi commodo. Praesent euismod neque lectus, at
117 dapibus ipsum gravida in. Pellentesque tempor massa eu viverra
118 feugiat. Proin eleifend pulvinar urna, ut dapibus metus vehicula
119 ac. Suspendisse rutrum finibus quam, ac dignissim diam blandit
120 maximus. In blandit viverra pulvinar. Praesent vel tellus
121 elementum, placerat lacus quis, ornare lectus. Donec ac
122 eleifend nulla, sit amet condimentum risus. Vestibulum aliquam
123 maximus ante non pellentesque. Praesent mollis ante in risus
124 feugiat hendrerit. Praesent feugiat maximus urna nec blandit. */
125 + /* { dg-error "invalid operands" } */
126 /* Vestibulum ac nunc eget enim tempor tristique. Suspendisse
127 potenti. Nam et sollicitudin enim. Morbi sed tincidunt lectus.
128 Sed facilisis velit at ante maximus feugiat. Sed vestibulum mi
129 id leo tempor, sed ullamcorper sapien efficitur. Vestibulum purus
130 lacus, dignissim non magna at, tincidunt luctus nisl. Cum sociis
131 natoque penatibus et magnis dis parturient montes, nascetur
132 ridiculus mus. Donec elit elit, laoreet a dolor quis, eleifend
133 dapibus metus. Proin lectus turpis, eleifend nec pharetra eu,
134 fermentum in lacus. Morbi sit amet mauris orci. Nam sagittis,
135 nibh vel fermentum dictum, purus ex hendrerit odio, feugiat
136 fringilla sapien elit vitae nisl. Fusce mattis commodo risus
137 nec convallis. */
138 (q + 1); /* { dg-locus "14" } */
139 /* { dg-locus "12" "" { target *-*-* } "125" } */
140 /* { dg-begin-multiline-output "" }
141 return (p + 1)
142 ~~~~~~~
143 { dg-end-multiline-output "" } */
144 /* { dg-begin-multiline-output "" }
147 { dg-end-multiline-output "" } */
148 /* { dg-begin-multiline-output "" }
149 (q + 1);
150 ~~~~~~~
151 { dg-end-multiline-output "" } */