diff options
author | phk <phk@FreeBSD.org> | 1994-11-03 06:52:42 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1994-11-03 06:52:42 +0000 |
commit | bbd23b334df6ee37516cf9398aff07483aeadb58 (patch) | |
tree | 50f1f9fa63ff73191f024d12c1c848e9cdcf55f8 /gnu/usr.bin/cc/cpp/cexp.c | |
parent | 2ef8552dd502af4e382f6c6346c4d35a0608e7b1 (diff) | |
download | FreeBSD-src-bbd23b334df6ee37516cf9398aff07483aeadb58.zip FreeBSD-src-bbd23b334df6ee37516cf9398aff07483aeadb58.tar.gz |
----------------------------------
GCC-2.6.1 COMES TO FREEBSD-current
----------------------------------
Everybody needs to 'make world'.
Oakland, Nov 2nd 1994. In a surprise move this sunny afternoon, the release-
engineer for the slightly delayed FreeBSD-2.0, Poul-Henning Kamp (28),
decided to pull in the new version 2.6.1 of the GNU C-compiler.
The new version of the compiler was release today at noon, and hardly 9
hours later it was committed into the FreeBSD-current source-repository.
"It's is simply because we have had too much trouble with the version 2.6.0
of the compiler" Poul-Henning told the FreeBSD-Gazette, "we took a gamble
when we decided to use that as our compiler for the 2.0 release, but it
seems to pay of in the end now" he concludes.
The move has not been discussed on the "core" list at all, and will come as
a surprise for most Poul-Hennings peers. "I have only discussed it with
Jordan [J. K. Hubbard, the FreeBSD's resident humourist], and we agreed that
we needed to do it, so ... I did it!". After a breath he added with a grin:
"My email will probably get an all time 'disk-full' now!".
This will bring quite a flag-day to the FreeBSD developers, the patch-file
is almost 1.4 Megabyte, and they will have to run "make world" to get
entirely -current again. "Too bad, but we just had to do this." Was
the only comment from Poul-Henning to these problems.
When asked how this move would impact the 2.0 release-date, Poul-Hennings
face grew dark, he mumbled some very Danish words while he moved his fingers
in strange geometrical patterns. Immediately something ecclipsed the Sun, a
minor tremor shook the buildings, and the temperature fell significantly.
We decided not to pursure the question.
-----------
JOB-SECTION
-----------
Are you a dedicated GCC-hacker ?
We BADLY need somebody to look at the 'freebsd' OS in gcc, sanitize it and
carry the patches back to the GNU people. In particular, we need to get
out of the "i386-only" spot we are in now. I have the stuff to take a
gnu-dist into bmake-form, and will do that part.
Please apply to phk@freebsd.org
No Novice Need Apply.
Diffstat (limited to 'gnu/usr.bin/cc/cpp/cexp.c')
-rw-r--r-- | gnu/usr.bin/cc/cpp/cexp.c | 102 |
1 files changed, 58 insertions, 44 deletions
diff --git a/gnu/usr.bin/cc/cpp/cexp.c b/gnu/usr.bin/cc/cpp/cexp.c index d1471aa..696635e 100644 --- a/gnu/usr.bin/cc/cpp/cexp.c +++ b/gnu/usr.bin/cc/cpp/cexp.c @@ -55,13 +55,27 @@ struct arglist { #endif #endif +/* Find the largest host integer type and set its size and type. */ + +#ifndef HOST_BITS_PER_WIDE_INT + +#if HOST_BITS_PER_LONG > HOST_BITS_PER_INT +#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG +#define HOST_WIDE_INT long +#else +#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_INT +#define HOST_WIDE_INT int +#endif + +#endif + #ifndef NULL_PTR #define NULL_PTR ((GENERIC_PTR)0) #endif int yylex (); void yyerror (); -int expression_value; +HOST_WIDE_INT expression_value; static jmp_buf parse_return_error; @@ -119,7 +133,7 @@ static void integer_overflow (); static long left_shift (); static long right_shift (); -#line 127 "cexp.y" +#line 141 "cexp.y" typedef union { struct constant {long value; int unsignedp;} integer; struct name {U_CHAR *address; int length;} name; @@ -218,10 +232,10 @@ static const short yyrhs[] = { 35, #if YYDEBUG != 0 static const short yyrline[] = { 0, - 159, 164, 165, 172, 177, 180, 182, 185, 189, 191, - 196, 201, 213, 228, 239, 246, 253, 259, 265, 268, - 271, 277, 283, 289, 295, 298, 301, 304, 307, 310, - 313, 315, 317, 322, 324, 337 + 173, 178, 179, 186, 191, 194, 196, 199, 203, 205, + 210, 215, 227, 242, 253, 260, 267, 273, 279, 282, + 285, 291, 297, 303, 309, 312, 315, 318, 321, 324, + 327, 329, 331, 336, 338, 351 }; static const char * const yytname[] = { "$","error","$illegal.","INT","CHAR", @@ -805,59 +819,59 @@ yyreduce: switch (yyn) { case 1: -#line 160 "cexp.y" +#line 174 "cexp.y" { expression_value = yyvsp[0].integer.value; ; break;} case 3: -#line 166 "cexp.y" +#line 180 "cexp.y" { if (pedantic) pedwarn ("comma operator in operand of `#if'"); yyval.integer = yyvsp[0].integer; ; break;} case 4: -#line 173 "cexp.y" +#line 187 "cexp.y" { yyval.integer.value = - yyvsp[0].integer.value; if ((yyval.integer.value & yyvsp[0].integer.value) < 0 && ! yyvsp[0].integer.unsignedp) integer_overflow (); yyval.integer.unsignedp = yyvsp[0].integer.unsignedp; ; break;} case 5: -#line 178 "cexp.y" +#line 192 "cexp.y" { yyval.integer.value = ! yyvsp[0].integer.value; yyval.integer.unsignedp = 0; ; break;} case 6: -#line 181 "cexp.y" +#line 195 "cexp.y" { yyval.integer = yyvsp[0].integer; ; break;} case 7: -#line 183 "cexp.y" +#line 197 "cexp.y" { yyval.integer.value = ~ yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[0].integer.unsignedp; ; break;} case 8: -#line 186 "cexp.y" +#line 200 "cexp.y" { yyval.integer.value = check_assertion (yyvsp[0].name.address, yyvsp[0].name.length, 0, NULL_PTR); yyval.integer.unsignedp = 0; ; break;} case 9: -#line 190 "cexp.y" +#line 204 "cexp.y" { keyword_parsing = 1; ; break;} case 10: -#line 192 "cexp.y" +#line 206 "cexp.y" { yyval.integer.value = check_assertion (yyvsp[-4].name.address, yyvsp[-4].name.length, 1, yyvsp[-1].keywords); keyword_parsing = 0; yyval.integer.unsignedp = 0; ; break;} case 11: -#line 197 "cexp.y" +#line 211 "cexp.y" { yyval.integer = yyvsp[-1].integer; ; break;} case 12: -#line 202 "cexp.y" +#line 216 "cexp.y" { yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; if (yyval.integer.unsignedp) yyval.integer.value = (unsigned long) yyvsp[-2].integer.value * yyvsp[0].integer.value; @@ -871,7 +885,7 @@ case 12: } ; break;} case 13: -#line 214 "cexp.y" +#line 228 "cexp.y" { if (yyvsp[0].integer.value == 0) { error ("division by zero in #if"); @@ -888,7 +902,7 @@ case 13: } ; break;} case 14: -#line 229 "cexp.y" +#line 243 "cexp.y" { if (yyvsp[0].integer.value == 0) { error ("division by zero in #if"); @@ -901,7 +915,7 @@ case 14: yyval.integer.value = yyvsp[-2].integer.value % yyvsp[0].integer.value; ; break;} case 15: -#line 240 "cexp.y" +#line 254 "cexp.y" { yyval.integer.value = yyvsp[-2].integer.value + yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; if (! yyval.integer.unsignedp @@ -910,7 +924,7 @@ case 15: integer_overflow (); ; break;} case 16: -#line 247 "cexp.y" +#line 261 "cexp.y" { yyval.integer.value = yyvsp[-2].integer.value - yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; if (! yyval.integer.unsignedp @@ -919,7 +933,7 @@ case 16: integer_overflow (); ; break;} case 17: -#line 254 "cexp.y" +#line 268 "cexp.y" { yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp; if (yyvsp[0].integer.value < 0 && ! yyvsp[0].integer.unsignedp) yyval.integer.value = right_shift (&yyvsp[-2].integer, -yyvsp[0].integer.value); @@ -927,7 +941,7 @@ case 17: yyval.integer.value = left_shift (&yyvsp[-2].integer, yyvsp[0].integer.value); ; break;} case 18: -#line 260 "cexp.y" +#line 274 "cexp.y" { yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp; if (yyvsp[0].integer.value < 0 && ! yyvsp[0].integer.unsignedp) yyval.integer.value = left_shift (&yyvsp[-2].integer, -yyvsp[0].integer.value); @@ -935,17 +949,17 @@ case 18: yyval.integer.value = right_shift (&yyvsp[-2].integer, yyvsp[0].integer.value); ; break;} case 19: -#line 266 "cexp.y" +#line 280 "cexp.y" { yyval.integer.value = (yyvsp[-2].integer.value == yyvsp[0].integer.value); yyval.integer.unsignedp = 0; ; break;} case 20: -#line 269 "cexp.y" +#line 283 "cexp.y" { yyval.integer.value = (yyvsp[-2].integer.value != yyvsp[0].integer.value); yyval.integer.unsignedp = 0; ; break;} case 21: -#line 272 "cexp.y" +#line 286 "cexp.y" { yyval.integer.unsignedp = 0; if (yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp) yyval.integer.value = (unsigned long) yyvsp[-2].integer.value <= yyvsp[0].integer.value; @@ -953,7 +967,7 @@ case 21: yyval.integer.value = yyvsp[-2].integer.value <= yyvsp[0].integer.value; ; break;} case 22: -#line 278 "cexp.y" +#line 292 "cexp.y" { yyval.integer.unsignedp = 0; if (yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp) yyval.integer.value = (unsigned long) yyvsp[-2].integer.value >= yyvsp[0].integer.value; @@ -961,7 +975,7 @@ case 22: yyval.integer.value = yyvsp[-2].integer.value >= yyvsp[0].integer.value; ; break;} case 23: -#line 284 "cexp.y" +#line 298 "cexp.y" { yyval.integer.unsignedp = 0; if (yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp) yyval.integer.value = (unsigned long) yyvsp[-2].integer.value < yyvsp[0].integer.value; @@ -969,7 +983,7 @@ case 23: yyval.integer.value = yyvsp[-2].integer.value < yyvsp[0].integer.value; ; break;} case 24: -#line 290 "cexp.y" +#line 304 "cexp.y" { yyval.integer.unsignedp = 0; if (yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp) yyval.integer.value = (unsigned long) yyvsp[-2].integer.value > yyvsp[0].integer.value; @@ -977,54 +991,54 @@ case 24: yyval.integer.value = yyvsp[-2].integer.value > yyvsp[0].integer.value; ; break;} case 25: -#line 296 "cexp.y" +#line 310 "cexp.y" { yyval.integer.value = yyvsp[-2].integer.value & yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; ; break;} case 26: -#line 299 "cexp.y" +#line 313 "cexp.y" { yyval.integer.value = yyvsp[-2].integer.value ^ yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; ; break;} case 27: -#line 302 "cexp.y" +#line 316 "cexp.y" { yyval.integer.value = yyvsp[-2].integer.value | yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; ; break;} case 28: -#line 305 "cexp.y" +#line 319 "cexp.y" { yyval.integer.value = (yyvsp[-2].integer.value && yyvsp[0].integer.value); yyval.integer.unsignedp = 0; ; break;} case 29: -#line 308 "cexp.y" +#line 322 "cexp.y" { yyval.integer.value = (yyvsp[-2].integer.value || yyvsp[0].integer.value); yyval.integer.unsignedp = 0; ; break;} case 30: -#line 311 "cexp.y" +#line 325 "cexp.y" { yyval.integer.value = yyvsp[-4].integer.value ? yyvsp[-2].integer.value : yyvsp[0].integer.value; yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp || yyvsp[0].integer.unsignedp; ; break;} case 31: -#line 314 "cexp.y" +#line 328 "cexp.y" { yyval.integer = yylval.integer; ; break;} case 32: -#line 316 "cexp.y" +#line 330 "cexp.y" { yyval.integer = yylval.integer; ; break;} case 33: -#line 318 "cexp.y" +#line 332 "cexp.y" { yyval.integer.value = 0; yyval.integer.unsignedp = 0; ; break;} case 34: -#line 323 "cexp.y" +#line 337 "cexp.y" { yyval.keywords = 0; ; break;} case 35: -#line 325 "cexp.y" +#line 339 "cexp.y" { struct arglist *temp; yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist)); yyval.keywords->next = yyvsp[-2].keywords; @@ -1039,7 +1053,7 @@ case 35: temp->next->length = 1; ; break;} case 36: -#line 338 "cexp.y" +#line 352 "cexp.y" { yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist)); yyval.keywords->name = yyvsp[-1].name.address; yyval.keywords->length = yyvsp[-1].name.length; @@ -1243,7 +1257,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 343 "cexp.y" +#line 357 "cexp.y" /* During parsing of a C expression, the pointer to the next character @@ -1809,7 +1823,7 @@ right_shift (a, b) /* We do not support C comments. They should be removed before this function is called. */ -int +HOST_WIDE_INT parse_c_expression (string) char *string; { @@ -1858,7 +1872,7 @@ main () if (buf[n] == EOF) break; buf[n] = '\0'; - printf ("parser returned %d\n", parse_c_expression (buf)); + printf ("parser returned %ld\n", parse_c_expression (buf)); } return 0; |