some fixes:
authorceriel <none@none>
Thu, 20 Oct 1988 12:55:02 +0000 (12:55 +0000)
committerceriel <none@none>
Thu, 20 Oct 1988 12:55:02 +0000 (12:55 +0000)
- use Malloc, Realloc instead of malloc, realloc
- generate common for un-initialized bss
- removed null-reference

util/ceg/EM_parser/common/action.c
util/ceg/EM_parser/common/default.c
util/ceg/EM_parser/common/pars.g

index 628f7c6..59581a9 100644 (file)
@@ -1,6 +1,5 @@
 #include "decl.h"
 #include <alloc.h>
-extern char *malloc(), *realloc(), *Salloc();
 
 /* This file contains some routines needed in "pars.g" to handle the  action-
  * grammarrule. The assembler-instructions are handeld in blocks rather than
@@ -24,7 +23,7 @@ init_as_block()
 
        if ( quantum == 0) {
                quantum = 16;
-               as_instructions = (char **)malloc( quantum*sizeof( char *));
+               as_instructions = (char **)Malloc( quantum*sizeof( char *));
        }
 }
 
@@ -37,7 +36,7 @@ char *instr;
 {
        if ( nr_instr == quantum) {
                quantum *= 2;
-               as_instructions = (char **) realloc( as_instructions,
+               as_instructions = (char **) Realloc( as_instructions,
                                           quantum*sizeof( char *));
        }
 
index 689185f..cc3a266 100644 (file)
@@ -196,7 +196,7 @@ handle_defaults()
                                 * ponding C_con_xxx C_rom_xxx instruction
                                 * so set correct info.
                                 */
-                               set_C_instr_info( def_info[i-2].name);
+                               set_C_instr_info( def_info[(i>>2)<<2].name);
                                def_row();
                                out( "}\n\n");
                        }
@@ -244,8 +244,7 @@ extnd_header()
  */
 {
        out( "if ( %s == 0 ) {\n", C_instr_info->arg_id[3]);
-       set_segment( SEGBSS);
-       out( "bss( %s);\n", C_instr_info->arg_id[0]);
+       out( "common( %s);\n", C_instr_info->arg_id[0]);
        out( "}\nelse {\n");
        set_segment( SEGCON);
        out( "for ( %s = 0; %s < %s/EM_WSIZE; %s++)\n",
index 6aadb7a..df6069f 100644 (file)
@@ -169,7 +169,7 @@ c_row       : %if ( to_change && strcmp( yytext, to_change) == 0)
        | C_INSTR
          [ c_special | c_simple]
 
-       | %if ( strcmp( yytext, to_change) == 0)
+       | %if ( to_change && strcmp( yytext, to_change) == 0)
          DEF_C_INSTR           { init_defaults( yytext);}
          [ Dspecial | Dsimple] { handle_defaults();}