]> git.ipfire.org Git - ipfire-3.x.git/blob - gcc/patches/gcc46-Woverlength-string-asm.patch0
Change file layout of the makefiles.
[ipfire-3.x.git] / gcc / patches / gcc46-Woverlength-string-asm.patch0
1 2011-02-02 Tom Tromey <tromey@redhat.com>
2
3 * c-parser.c (c_parser_asm_string_literal): Clear
4 warn_overlength_strings.
5
6 * gcc.dg/Woverlength-strings-pedantic-c90-asm.c: New file.
7 * gcc.dg/Woverlength-strings-pedantic-c89-asm.c: New file.
8 * gcc.dg/Woverlength-strings-pedantic-c99-asm.c: New file.
9
10 --- gcc/c-parser.c
11 +++ gcc/c-parser.c
12 @@ -3264,6 +3264,8 @@ static tree
13 c_parser_asm_string_literal (c_parser *parser)
14 {
15 tree str;
16 + int save_flag = warn_overlength_strings;
17 + warn_overlength_strings = 0;
18 if (c_parser_next_token_is (parser, CPP_STRING))
19 {
20 str = c_parser_peek_token (parser)->value;
21 @@ -3281,6 +3283,7 @@ c_parser_asm_string_literal (c_parser *parser)
22 c_parser_error (parser, "expected string literal");
23 str = NULL_TREE;
24 }
25 + warn_overlength_strings = save_flag;
26 return str;
27 }
28
29 --- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
30 +++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
31 @@ -0,0 +1,47 @@
32 +/* -Woverlength-strings complains about string constants which are too long
33 + for the C standard's "minimum maximum" limits. It is off by default,
34 + but implied by -pedantic. */
35 +
36 +/* { dg-options "-std=c89 -pedantic" } */
37 +
38 +#define TEN " "
39 +#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
40 +#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
41 +
42 +/* C89's minimum-maximum is 509. */
43 +__asm__ (HUN HUN HUN HUN HUN TEN);
44 +
45 +/* C99's minimum-maximum is 4095. */
46 +__asm__ (
47 + THO THO THO THO /* 4000 */
48 + TEN TEN TEN TEN TEN /* 4050 */
49 + TEN TEN TEN TEN /* 4090 */
50 + "123456");
51 +
52 +void
53 +f (void)
54 +{
55 + /* C89's minimum-maximum is 509. */
56 + __asm__ (HUN HUN HUN HUN HUN TEN);
57 + __asm__ (HUN HUN HUN HUN HUN TEN : : );
58 + __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
59 +
60 + /* C99's minimum-maximum is 4095. */
61 + __asm__ (
62 + THO THO THO THO /* 4000 */
63 + TEN TEN TEN TEN TEN /* 4050 */
64 + TEN TEN TEN TEN /* 4090 */
65 + "123456");
66 + __asm__ (
67 + THO THO THO THO /* 4000 */
68 + TEN TEN TEN TEN TEN /* 4050 */
69 + TEN TEN TEN TEN /* 4090 */
70 + "123456" : : );
71 + __asm__ goto (
72 + THO THO THO THO /* 4000 */
73 + TEN TEN TEN TEN TEN /* 4050 */
74 + TEN TEN TEN TEN /* 4090 */
75 + "123456" : : : : label);
76 +
77 + label: ;
78 +}
79 --- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
80 +++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
81 @@ -0,0 +1,48 @@
82 +/* -Woverlength-strings complains about string constants which are too long
83 + for the C standard's "minimum maximum" limits. It is off by default,
84 + but implied by -pedantic. */
85 +
86 +/* { dg-options "-std=c90 -pedantic" } */
87 +
88 +#define TEN " "
89 +#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
90 +#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
91 +
92 +/* C89's minimum-maximum is 509. */
93 +__asm__ (HUN HUN HUN HUN HUN TEN);
94 +
95 +/* C99's minimum-maximum is 4095. */
96 +__asm__ (
97 + THO THO THO THO /* 4000 */
98 + TEN TEN TEN TEN TEN /* 4050 */
99 + TEN TEN TEN TEN /* 4090 */
100 + "123456");
101 +
102 +void
103 +f (void)
104 +{
105 + /* C89's minimum-maximum is 509. */
106 + __asm__ (HUN HUN HUN HUN HUN TEN);
107 + __asm__ (HUN HUN HUN HUN HUN TEN : :);
108 + __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
109 +
110 + /* C99's minimum-maximum is 4095. */
111 + __asm__ (
112 + THO THO THO THO /* 4000 */
113 + TEN TEN TEN TEN TEN /* 4050 */
114 + TEN TEN TEN TEN /* 4090 */
115 + "123456");
116 + __asm__ (
117 + THO THO THO THO /* 4000 */
118 + TEN TEN TEN TEN TEN /* 4050 */
119 + TEN TEN TEN TEN /* 4090 */
120 + "123456" : :);
121 + __asm__ goto (
122 + THO THO THO THO /* 4000 */
123 + TEN TEN TEN TEN TEN /* 4050 */
124 + TEN TEN TEN TEN /* 4090 */
125 + "123456" : : : : label);
126 +
127 + label: ;
128 +}
129 +
130 --- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
131 +++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
132 @@ -0,0 +1,48 @@
133 +/* -Woverlength-strings complains about string constants which are too long
134 + for the C standard's "minimum maximum" limits. It is off by default,
135 + but implied by -pedantic. */
136 +
137 +/* { dg-options "-std=c99 -pedantic" } */
138 +
139 +#define TEN " "
140 +#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
141 +#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
142 +
143 +/* C89's minimum-maximum is 509. */
144 +__asm__ (HUN HUN HUN HUN HUN TEN);
145 +
146 +/* C99's minimum-maximum is 4095. */
147 +__asm__ (
148 + THO THO THO THO /* 4000 */
149 + TEN TEN TEN TEN TEN /* 4050 */
150 + TEN TEN TEN TEN /* 4090 */
151 + "123456");
152 +
153 +void
154 +f (void)
155 +{
156 + /* C89's minimum-maximum is 509. */
157 + __asm__ (HUN HUN HUN HUN HUN TEN);
158 + __asm__ (HUN HUN HUN HUN HUN TEN : :);
159 + __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
160 +
161 + /* C99's minimum-maximum is 4095. */
162 + __asm__ (
163 + THO THO THO THO /* 4000 */
164 + TEN TEN TEN TEN TEN /* 4050 */
165 + TEN TEN TEN TEN /* 4090 */
166 + "123456");
167 + __asm__ (
168 + THO THO THO THO /* 4000 */
169 + TEN TEN TEN TEN TEN /* 4050 */
170 + TEN TEN TEN TEN /* 4090 */
171 + "123456" : :);
172 + __asm__ goto (
173 + THO THO THO THO /* 4000 */
174 + TEN TEN TEN TEN TEN /* 4050 */
175 + TEN TEN TEN TEN /* 4090 */
176 + "123456" : : : : label);
177 +
178 + label: ;
179 +}
180 +