Mercurial > hg > qcc
comparison tcc.c @ 550:cfb21030b240
Minor tweaks for building on a 64-bit host, and remove an unnecessary local variable.
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 17 Jan 2008 22:59:03 -0600 |
parents | 3f683703c8db |
children | d8b3fa09ca5d |
comparison
equal
deleted
inserted
replaced
549:26c8edc8b79f | 550:cfb21030b240 |
---|---|
806 } | 806 } |
807 return cstr_buf.data; | 807 return cstr_buf.data; |
808 } | 808 } |
809 | 809 |
810 /* push, without hashing */ | 810 /* push, without hashing */ |
811 static Sym *sym_push2(Sym **ps, int v, int t, int c) | 811 static Sym *sym_push2(Sym **ps, int v, int t, long c) |
812 { | 812 { |
813 Sym *s; | 813 Sym *s; |
814 s = sym_malloc(); | 814 s = sym_malloc(); |
815 s->v = v; | 815 s->v = v; |
816 s->type.t = t; | 816 s->type.t = t; |
1582 /* defines handling */ | 1582 /* defines handling */ |
1583 static inline void define_push(int v, int macro_type, int *str, Sym *first_arg) | 1583 static inline void define_push(int v, int macro_type, int *str, Sym *first_arg) |
1584 { | 1584 { |
1585 Sym *s; | 1585 Sym *s; |
1586 | 1586 |
1587 s = sym_push2(&define_stack, v, macro_type, (int)str); | 1587 s = sym_push2(&define_stack, v, macro_type, (long)str); |
1588 s->next = first_arg; | 1588 s->next = first_arg; |
1589 table_ident[v - TOK_IDENT]->sym_define = s; | 1589 table_ident[v - TOK_IDENT]->sym_define = s; |
1590 } | 1590 } |
1591 | 1591 |
1592 /* undefined a define symbol. Its name is just set to zero */ | 1592 /* undefined a define symbol. Its name is just set to zero */ |
3224 parlevel--; | 3224 parlevel--; |
3225 tok_str_add2(&str, tok, tok_flags, &tokc); | 3225 tok_str_add2(&str, tok, tok_flags, &tokc); |
3226 next_nomacro(); | 3226 next_nomacro(); |
3227 } | 3227 } |
3228 tok_str_add(&str, 0, 0); | 3228 tok_str_add(&str, 0, 0); |
3229 sym_push2(&args, sa->v & ~SYM_FIELD, sa->type.t, (int)str.str); | 3229 sym_push2(&args, sa->v & ~SYM_FIELD, sa->type.t, (long)str.str); |
3230 sa = sa->next; | 3230 sa = sa->next; |
3231 if (tok == ')') { | 3231 if (tok == ')') { |
3232 /* special case for gcc var args: add an empty | 3232 /* special case for gcc var args: add an empty |
3233 var arg argument if it is omitted */ | 3233 var arg argument if it is omitted */ |
3234 if (sa && sa->type.t && gnu_ext) | 3234 if (sa && sa->type.t && gnu_ext) |
7130 skip('('); | 7130 skip('('); |
7131 gexpr(); | 7131 gexpr(); |
7132 skip(')'); | 7132 skip(')'); |
7133 a = gtst(1, 0); | 7133 a = gtst(1, 0); |
7134 block(bsym, csym, case_sym, def_sym, case_reg, 0); | 7134 block(bsym, csym, case_sym, def_sym, case_reg, 0); |
7135 c = tok; | 7135 if (tok == TOK_ELSE) { |
7136 if (c == TOK_ELSE) { | |
7137 next(); | 7136 next(); |
7138 d = gjmp(0); | 7137 d = gjmp(0); |
7139 gsym(a); | 7138 gsym(a); |
7140 block(bsym, csym, case_sym, def_sym, case_reg, 0); | 7139 block(bsym, csym, case_sym, def_sym, case_reg, 0); |
7141 gsym(d); /* patch else jmp */ | 7140 gsym(d); /* patch else jmp */ |