]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blame - gcc/patches/gcc46-Woverlength-string-asm.patch0
Move all packages to root.
[people/arne_f/ipfire-3.x.git] / gcc / patches / gcc46-Woverlength-string-asm.patch0
CommitLineData
3c926509
MT
12011-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+