diff options
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/c-gperf.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 16 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 215 | ||||
-rwxr-xr-x | gcc/configure | 2 | ||||
-rw-r--r-- | gcc/java/parse.c | 392 |
6 files changed, 283 insertions, 357 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f3c7e1..bcc9e4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,18 @@ Tue Nov 30 15:20:52 MET 1999 Jan Hubicka <hubicka@freesoft.cz> + * i386.c (ix86_expand_move): Never add clobbers to move patterns. + * i386.md (movsi_xor): New. + (movsi_or): New. + (movsi_1, movhi_1, movqi_1): Remove. + (movsi_2): Rename to movsi_1. + (movhi_2): Rename to movhi_1. + (movqi_2): Rename to movqi_1. + (movdi_1): Remove; remove splitter. + (movdi_2): Rename to movdi_1. + (divmodsi4 splitter): Do not emit clobbers for move patterns. + (long move peep2): Do not create QI or HI mode mov0s + (mov -1,reg -> or peep2s): Enable again, rewrite to single peephole. + * i386.md (zero_extend?i?i2): Rewrite to expanders; new patterns, rewrite splitters. diff --git a/gcc/c-gperf.h b/gcc/c-gperf.h index 4d85b1b..504c200 100644 --- a/gcc/c-gperf.h +++ b/gcc/c-gperf.h @@ -1,4 +1,4 @@ -/* C code produced by gperf version 2.7.1 (19981006 egcs) */ +/* C code produced by gperf version 2.7 */ /* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ./c-parse.gperf */ /* Command-line: gperf -L C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */ struct resword { const char *name; short token; enum rid rid; }; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 48b8845..e6f6114 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3614,7 +3614,6 @@ ix86_expand_move (mode, operands) rtx operands[]; { int strict = (reload_in_progress || reload_completed); - int want_clobber = 0; rtx insn; if (flag_pic && mode == Pmode && symbolic_operand (operands[1], Pmode)) @@ -3653,24 +3652,9 @@ ix86_expand_move (mode, operands) && ! standard_80387_constant_p (operands[1])) operands[1] = validize_mem (force_const_mem (mode, operands[1])); } - else - { - /* Try to guess when a cc clobber on the move might be fruitful. */ - if (!strict - && GET_CODE (operands[0]) == REG - && operands[1] == const0_rtx - && !flag_peephole2) - want_clobber = 1; - } } insn = gen_rtx_SET (VOIDmode, operands[0], operands[1]); - if (want_clobber) - { - rtx clob; - clob = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG)); - insn = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, insn, clob)); - } emit_insn (insn); } diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 562f08f..6966cf2 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1142,39 +1142,31 @@ "pop{l}\\t%0" [(set_attr "type" "pop")]) -(define_insn "*movsi_1" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r,m") - (match_operand:SI 1 "general_operand" "rim,ri")) +(define_insn "*movsi_xor" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operand:SI 1 "const0_operand" "i")) (clobber (reg:CC 17))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" + "reload_completed && (!TARGET_USE_MOV0 || optimize_size)" + "xor{l}\\t{%0, %0|%0, %0}" + [(set_attr "type" "alu1") + (set_attr "length" "2")]) + +(define_insn "*movsi_or" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operand:SI 1 "immediate_operand" "i")) + (clobber (reg:CC 17))] + "reload_completed && GET_CODE (operands[1]) == CONST_INT + && INTVAL (operands[1]) == -1 + && (TARGET_PENTIUM || optimize_size)" "* { - switch (get_attr_type (insn)) - { - case TYPE_ALU1: - if (operands[1] != const0_rtx) - abort(); - return \"xor{l}\\t{%0, %0|%0, %0}\"; - case TYPE_LEA: - return \"lea{l}\\t{%1, %0|%0, %1}\"; - default: - if (flag_pic && SYMBOLIC_CONST (operands[1])) - abort(); - return \"mov{l}\\t{%1, %0|%0, %1}\"; - } + operands[1] = constm1_rtx; + return \"or{l}\\t{%1, %0|%1, %0}\"; }" - [(set (attr "type") - (cond [(and (match_operand:SI 1 "const0_operand" "") - (and (match_operand:SI 0 "register_operand" "") - (eq (symbol_ref "TARGET_USE_MOV0") (const_int 0)))) - (const_string "alu1") - (and (ne (symbol_ref "flag_pic") (const_int 0)) - (match_operand:SI 1 "symbolic_operand" "")) - (const_string "lea") - ] - (const_string "imov")))]) + [(set_attr "type" "alu1") + (set_attr "length" "3")]) -(define_insn "*movsi_2" +(define_insn "*movsi_1" [(set (match_operand:SI 0 "nonimmediate_operand" "=r,m") (match_operand:SI 1 "general_operand" "rinm,rin"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" @@ -1234,58 +1226,6 @@ (define_insn "*movhi_1" [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m") - (match_operand:HI 1 "general_operand" "rn,rm,rn")) - (clobber (reg:CC 17))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" - "* -{ - switch (get_attr_type (insn)) - { - case TYPE_ALU1: - /* Clear the whole register -- smaller, faster, better. */ - if (operands[1] != const0_rtx) - abort(); - return \"xor{l}\\t%k0, %k0\"; - case TYPE_IMOVX: - return \"movz{wl|x}\\t{%1, %k0|%k0, %1}\"; - default: - if (get_attr_length_prefix (insn) == 0) - return \"mov{l}\\t{%k1, %k0|%k0, %k1}\"; - else - return \"mov{w}\\t{%1, %0|%0, %1}\"; - } -}" - [(set (attr "type") - (cond [(and (match_operand:HI 1 "const0_operand" "") - (and (match_operand:HI 0 "register_operand" "") - (eq (symbol_ref "TARGET_USE_MOV0") (const_int 0)))) - (const_string "alu1") - (and (ne (symbol_ref "TARGET_MOVX") - (const_int 0)) - (eq_attr "alternative" "1")) - (const_string "imovx") - ] - (const_string "imov"))) - (set (attr "length_prefix") - (cond [(eq_attr "type" "imovx") - (const_string "0") - (and (eq_attr "alternative" "0") - (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") - (const_int 0))) - (const_string "0") - ] - (const_string "1"))) - ; There's no place to override just the immediate length - (set (attr "length") - (cond [(and (eq_attr "type" "imov") - (and (eq_attr "length_prefix" "0") - (match_operand:HI 1 "immediate_operand" ""))) - (const_string "5") - ] - (const_string "*")))]) - -(define_insn "*movhi_2" - [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m") (match_operand:HI 1 "general_operand" "rn,rm,rn"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* @@ -1409,53 +1349,6 @@ (define_insn "*movqi_1" [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,*r,*r,m") - (match_operand:QI 1 "general_operand" "qn,qm,*rn,qm,qn")) - (clobber (reg:CC 17))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" - "* -{ - switch (get_attr_type (insn)) - { - case TYPE_ALU1: - /* Clear the whole register -- smaller, faster, better. */ - if (operands[1] != const0_rtx) - abort(); - return \"xor{l}\\t%k0, %k0\"; - case TYPE_IMOVX: - if (!QI_REG_P (operands[1]) && GET_CODE (operands[1]) != MEM) - abort (); - return \"movz{bl|x}\\t{%1, %k0|%k0, %1}\"; - default: - if (which_alternative == 2) - return \"mov{l}\\t{%k1, %k0|%k0, %k1}\"; - else - return \"mov{b}\\t{%1, %0|%0, %1}\"; - } -}" - [(set (attr "type") - (cond [(and (match_operand:QI 1 "const0_operand" "") - (and (match_operand:QI 0 "register_operand" "") - (eq (symbol_ref "TARGET_USE_MOV0") (const_int 0)))) - (const_string "alu1") - (eq_attr "alternative" "3") - (const_string "imovx") - (and (ne (symbol_ref "TARGET_MOVX") - (const_int 0)) - (eq_attr "alternative" "1")) - (const_string "imovx") - ] - (const_string "imov"))) - ; There's no place to override just the immediate length - (set (attr "length") - (cond [(and (eq_attr "type" "imov") - (and (eq_attr "alternative" "2") - (match_operand:HI 1 "immediate_operand" ""))) - (const_string "5") - ] - (const_string "*")))]) - -(define_insn "*movqi_2" - [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,*r,*r,m") (match_operand:QI 1 "general_operand" "qn,qm,*rn,qm,qn"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* @@ -1649,13 +1542,6 @@ "" "#") -(define_insn "*movdi_1" - [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o") - (match_operand:DI 1 "general_operand" "riFo,riF")) - (clobber (reg:CC 17))] - "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" - "#") - (define_insn "*movdi_2" [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o") (match_operand:DI 1 "general_operand" "riFo,riF"))] @@ -1672,17 +1558,6 @@ ;; %%% This multiword shite has got to go. (define_split [(set (match_operand:DI 0 "nonimmediate_operand" "") - (match_operand:DI 1 "general_operand" "")) - (clobber (reg:CC 17))] - "reload_completed" - [(parallel [(set (match_dup 2) (match_dup 5)) - (clobber (reg:CC 17))]) - (parallel [(set (match_dup 3) (match_dup 6)) - (clobber (reg:CC 17))])] - "if (ix86_split_long_move (operands)) DONE;") - -(define_split - [(set (match_operand:DI 0 "nonimmediate_operand" "") (match_operand:DI 1 "general_operand" ""))] "reload_completed" [(set (match_dup 2) (match_dup 5)) @@ -2353,8 +2228,7 @@ (zero_extend:DI (match_operand:SI 1 "register_operand" ""))) (clobber (reg:CC 17))] "reload_completed && true_regnum (operands[0]) == true_regnum (operands[1])" - [(parallel [(set (match_dup 4) (const_int 0)) - (clobber (reg:CC 17))])] + [(set (match_dup 4) (const_int 0))] "split_di (&operands[0], 1, &operands[3], &operands[4]);") (define_split @@ -2363,8 +2237,7 @@ (clobber (reg:CC 17))] "reload_completed" [(set (match_dup 3) (match_dup 1)) - (parallel [(set (match_dup 4) (const_int 0)) - (clobber (reg:CC 17))])] + (set (match_dup 4) (const_int 0))] "split_di (&operands[0], 1, &operands[3], &operands[4]);") ;; Sign extension instructions @@ -4107,8 +3980,7 @@ (umod:SI (match_dup 1) (match_dup 2))) (clobber (reg:CC 17))] "reload_completed" - [(parallel [(set (match_dup 3) (const_int 0)) - (clobber (reg:CC 17))]) + [(set (match_dup 3) (const_int 0)) (parallel [(set (match_dup 0) (udiv:SI (match_dup 1) (match_dup 2))) (set (match_dup 3) @@ -4118,8 +3990,7 @@ "") (define_expand "udivmodhi4" - [(parallel [(set (match_dup 4) (const_int 0)) - (clobber (reg:CC 17))]) + [(set (match_dup 4) (const_int 0)) (parallel [(set (match_operand:HI 0 "register_operand" "") (udiv:HI (match_operand:HI 1 "register_operand" "") (match_operand:HI 2 "nonimmediate_operand" ""))) @@ -8315,6 +8186,7 @@ (const_int 0))] "! optimize_size && get_attr_length (insn) >= ix86_cost->large_insn && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG)) + && ! TARGET_USE_MOV0 && TARGET_SPLIT_LONG_MOVES" [(parallel [(set (match_dup 1) (const_int 0)) (clobber (reg:CC 17))]) @@ -8327,11 +8199,12 @@ (const_int 0))] "! optimize_size && get_attr_length (insn) >= ix86_cost->large_insn && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG)) + && ! TARGET_USE_MOV0 && TARGET_SPLIT_LONG_MOVES" - [(parallel [(set (match_dup 1) (const_int 0)) + [(parallel [(set (match_dup 2) (const_int 0)) (clobber (reg:CC 17))]) (set (match_dup 0) (match_dup 1))] - "") + "operands[2] = gen_rtx_REG (SImode, true_regnum (operands[1]));") (define_peephole2 [(match_scratch:QI 1 "q") @@ -8339,11 +8212,12 @@ (const_int 0))] "! optimize_size && get_attr_length (insn) >= ix86_cost->large_insn && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG)) + && ! TARGET_USE_MOV0 && TARGET_SPLIT_LONG_MOVES" - [(parallel [(set (match_dup 1) (const_int 0)) + [(parallel [(set (match_dup 2) (const_int 0)) (clobber (reg:CC 17))]) (set (match_dup 0) (match_dup 1))] - "") + "operands[2] = gen_rtx_REG (SImode, true_regnum (operands[1]));") (define_peephole2 [(match_scratch:SI 2 "r") @@ -8607,32 +8481,19 @@ && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG))" [(parallel [(set (match_dup 0) (const_int 0)) (clobber (reg:CC 17))])] - "") - -;; ??? Rewrite these to not introduce the false dependancy. -;; Currently they'll trip update_life_info's sanity checks. + "operands[0] = gen_rtx_REG (SImode, true_regnum (operands[0]));") ;; For HI and SI modes, or $-1,reg is smaller than mov $-1,reg. (define_peephole2 - [(set (match_operand:SI 0 "register_operand" "") - (const_int -1))] - "0 && (optimize_size || TARGET_PENTIUM) - && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG))" - [(parallel [(set (match_dup 0) - (ior:SI (match_dup 0) (const_int -1))) - (clobber (reg:CC 17))])] - "") - -(define_peephole2 - [(set (match_operand:HI 0 "register_operand" "") + [(set (match_operand 0 "register_operand" "") (const_int -1))] - "0 && (optimize_size || TARGET_PENTIUM) + "(GET_MODE (operands[0]) == HImode + || GET_MODE (operands[0]) == SImode) + && (optimize_size || TARGET_PENTIUM) && reg_dead_p (insn, gen_rtx_REG (CCmode, FLAGS_REG))" - [(parallel [(set (match_dup 0) - (ior:HI (match_dup 0) (const_int -1))) + [(parallel [(set (match_dup 0) (const_int -1)) (clobber (reg:CC 17))])] - "") - + "operands[0] = gen_rtx_REG (SImode, true_regnum (operands[0]));") ;; Call-value patterns last so that the wildcard operand does not ;; disrupt insn-recog's switch tables. diff --git a/gcc/configure b/gcc/configure index 3ad423c..962f147 100755 --- a/gcc/configure +++ b/gcc/configure @@ -1337,7 +1337,7 @@ else fi # Find some useful tools -for ac_prog in mawk gawk nawk awk +for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 diff --git a/gcc/java/parse.c b/gcc/java/parse.c index 58b96ca..9085803 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from ./parse.y - by GNU Bison version 1.25 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -12,113 +11,113 @@ #define yychar java_char #define yydebug java_debug #define yynerrs java_nerrs -#define PLUS_TK 258 -#define MINUS_TK 259 -#define MULT_TK 260 -#define DIV_TK 261 -#define REM_TK 262 -#define LS_TK 263 -#define SRS_TK 264 -#define ZRS_TK 265 -#define AND_TK 266 -#define XOR_TK 267 -#define OR_TK 268 -#define BOOL_AND_TK 269 -#define BOOL_OR_TK 270 -#define EQ_TK 271 -#define NEQ_TK 272 -#define GT_TK 273 -#define GTE_TK 274 -#define LT_TK 275 -#define LTE_TK 276 -#define PLUS_ASSIGN_TK 277 -#define MINUS_ASSIGN_TK 278 -#define MULT_ASSIGN_TK 279 -#define DIV_ASSIGN_TK 280 -#define REM_ASSIGN_TK 281 -#define LS_ASSIGN_TK 282 -#define SRS_ASSIGN_TK 283 -#define ZRS_ASSIGN_TK 284 -#define AND_ASSIGN_TK 285 -#define XOR_ASSIGN_TK 286 -#define OR_ASSIGN_TK 287 -#define PUBLIC_TK 288 -#define PRIVATE_TK 289 -#define PROTECTED_TK 290 -#define STATIC_TK 291 -#define FINAL_TK 292 -#define SYNCHRONIZED_TK 293 -#define VOLATILE_TK 294 -#define TRANSIENT_TK 295 -#define NATIVE_TK 296 -#define PAD_TK 297 -#define ABSTRACT_TK 298 -#define MODIFIER_TK 299 -#define DECR_TK 300 -#define INCR_TK 301 -#define DEFAULT_TK 302 -#define IF_TK 303 -#define THROW_TK 304 -#define BOOLEAN_TK 305 -#define DO_TK 306 -#define IMPLEMENTS_TK 307 -#define THROWS_TK 308 -#define BREAK_TK 309 -#define IMPORT_TK 310 -#define ELSE_TK 311 -#define INSTANCEOF_TK 312 -#define RETURN_TK 313 -#define VOID_TK 314 -#define CATCH_TK 315 -#define INTERFACE_TK 316 -#define CASE_TK 317 -#define EXTENDS_TK 318 -#define FINALLY_TK 319 -#define SUPER_TK 320 -#define WHILE_TK 321 -#define CLASS_TK 322 -#define SWITCH_TK 323 -#define CONST_TK 324 -#define TRY_TK 325 -#define FOR_TK 326 -#define NEW_TK 327 -#define CONTINUE_TK 328 -#define GOTO_TK 329 -#define PACKAGE_TK 330 -#define THIS_TK 331 -#define BYTE_TK 332 -#define SHORT_TK 333 -#define INT_TK 334 -#define LONG_TK 335 -#define CHAR_TK 336 -#define INTEGRAL_TK 337 -#define FLOAT_TK 338 -#define DOUBLE_TK 339 -#define FP_TK 340 -#define ID_TK 341 -#define REL_QM_TK 342 -#define REL_CL_TK 343 -#define NOT_TK 344 -#define NEG_TK 345 -#define ASSIGN_ANY_TK 346 -#define ASSIGN_TK 347 -#define OP_TK 348 -#define CP_TK 349 -#define OCB_TK 350 -#define CCB_TK 351 -#define OSB_TK 352 -#define CSB_TK 353 -#define SC_TK 354 -#define C_TK 355 -#define DOT_TK 356 -#define STRING_LIT_TK 357 -#define CHAR_LIT_TK 358 -#define INT_LIT_TK 359 -#define FP_LIT_TK 360 -#define TRUE_TK 361 -#define FALSE_TK 362 -#define BOOL_LIT_TK 363 -#define NULL_TK 364 +#define PLUS_TK 257 +#define MINUS_TK 258 +#define MULT_TK 259 +#define DIV_TK 260 +#define REM_TK 261 +#define LS_TK 262 +#define SRS_TK 263 +#define ZRS_TK 264 +#define AND_TK 265 +#define XOR_TK 266 +#define OR_TK 267 +#define BOOL_AND_TK 268 +#define BOOL_OR_TK 269 +#define EQ_TK 270 +#define NEQ_TK 271 +#define GT_TK 272 +#define GTE_TK 273 +#define LT_TK 274 +#define LTE_TK 275 +#define PLUS_ASSIGN_TK 276 +#define MINUS_ASSIGN_TK 277 +#define MULT_ASSIGN_TK 278 +#define DIV_ASSIGN_TK 279 +#define REM_ASSIGN_TK 280 +#define LS_ASSIGN_TK 281 +#define SRS_ASSIGN_TK 282 +#define ZRS_ASSIGN_TK 283 +#define AND_ASSIGN_TK 284 +#define XOR_ASSIGN_TK 285 +#define OR_ASSIGN_TK 286 +#define PUBLIC_TK 287 +#define PRIVATE_TK 288 +#define PROTECTED_TK 289 +#define STATIC_TK 290 +#define FINAL_TK 291 +#define SYNCHRONIZED_TK 292 +#define VOLATILE_TK 293 +#define TRANSIENT_TK 294 +#define NATIVE_TK 295 +#define PAD_TK 296 +#define ABSTRACT_TK 297 +#define MODIFIER_TK 298 +#define DECR_TK 299 +#define INCR_TK 300 +#define DEFAULT_TK 301 +#define IF_TK 302 +#define THROW_TK 303 +#define BOOLEAN_TK 304 +#define DO_TK 305 +#define IMPLEMENTS_TK 306 +#define THROWS_TK 307 +#define BREAK_TK 308 +#define IMPORT_TK 309 +#define ELSE_TK 310 +#define INSTANCEOF_TK 311 +#define RETURN_TK 312 +#define VOID_TK 313 +#define CATCH_TK 314 +#define INTERFACE_TK 315 +#define CASE_TK 316 +#define EXTENDS_TK 317 +#define FINALLY_TK 318 +#define SUPER_TK 319 +#define WHILE_TK 320 +#define CLASS_TK 321 +#define SWITCH_TK 322 +#define CONST_TK 323 +#define TRY_TK 324 +#define FOR_TK 325 +#define NEW_TK 326 +#define CONTINUE_TK 327 +#define GOTO_TK 328 +#define PACKAGE_TK 329 +#define THIS_TK 330 +#define BYTE_TK 331 +#define SHORT_TK 332 +#define INT_TK 333 +#define LONG_TK 334 +#define CHAR_TK 335 +#define INTEGRAL_TK 336 +#define FLOAT_TK 337 +#define DOUBLE_TK 338 +#define FP_TK 339 +#define ID_TK 340 +#define REL_QM_TK 341 +#define REL_CL_TK 342 +#define NOT_TK 343 +#define NEG_TK 344 +#define ASSIGN_ANY_TK 345 +#define ASSIGN_TK 346 +#define OP_TK 347 +#define CP_TK 348 +#define OCB_TK 349 +#define CCB_TK 350 +#define OSB_TK 351 +#define CSB_TK 352 +#define SC_TK 353 +#define C_TK 354 +#define DOT_TK 355 +#define STRING_LIT_TK 356 +#define CHAR_LIT_TK 357 +#define INT_LIT_TK 358 +#define FP_LIT_TK 359 +#define TRUE_TK 360 +#define FALSE_TK 361 +#define BOOL_LIT_TK 362 +#define NULL_TK 363 #line 48 "./parse.y" @@ -433,7 +432,7 @@ typedef union { #define YYFLAG -32768 #define YYNTBASE 110 -#define YYTRANSLATE(x) ((unsigned)(x) <= 364 ? yytranslate[x] : 266) +#define YYTRANSLATE(x) ((unsigned)(x) <= 363 ? yytranslate[x] : 266) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -461,18 +460,18 @@ static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109 + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109 }; #if YYDEBUG != 0 @@ -2256,7 +2255,8 @@ static const short yycheck[] = { 3, #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 3 "/usr/lib/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -2273,46 +2273,66 @@ static const short yycheck[] = { 3, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -#ifndef alloca +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ #ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA #include <alloca.h> #else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ #include <malloc.h> +#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -#include <malloc.h> +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include <malloc.h> */ #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca #endif /* __hpux */ +#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -2322,8 +2342,8 @@ void *alloca (); #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -2404,12 +2424,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -int yyparse (void); -#endif +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -2421,7 +2441,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - int count; + unsigned int count; { register char *f = from; register char *t = to; @@ -2436,10 +2456,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, int count) +__yy_memcpy (char *to, char *from, unsigned int count) { - register char *f = from; register char *t = to; + register char *f = from; register int i = count; while (i-- > 0) @@ -2449,7 +2469,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -2470,6 +2490,15 @@ __yy_memcpy (char *to, char *from, int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -2498,6 +2527,7 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -2582,18 +2612,32 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -4746,7 +4790,7 @@ case 495: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -4941,6 +4985,30 @@ yyerrhandle: yystate = yyn; goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; } #line 2343 "./parse.y" |