diff options
| author | Thomas Preud'homme <thomas.preudhomme@celest.fr> | 2010-09-14 19:17:39 +0200 |
|---|---|---|
| committer | Thomas Preud'homme <thomas.preudhomme@celest.fr> | 2010-09-14 23:21:15 +0200 |
| commit | b8adf0090e984d93b6fb3af635fedbbbebfa92e4 (patch) | |
| tree | 501865bea4cbbfad336af9b7221e001c0b264bd0 | |
| parent | 2596273fce52e1f9db1b03d495537614fd56cef5 (diff) | |
| download | tinycc-b8adf0090e984d93b6fb3af635fedbbbebfa92e4.tar.gz tinycc-b8adf0090e984d93b6fb3af635fedbbbebfa92e4.tar.bz2 | |
Move asm label functions from tccasm.c to tccgen.c
* Move functions parse_asm_str and asm_label_instr from tccasm.c to
tccgen.c
* Remove CONFIG_TCC_ASM_LABEL macro as asm label are available on all
archs.
See:
http://lists.nongnu.org/archive/html/tinycc-devel/2010-09/msg00026.html
for the rationale.
| -rw-r--r-- | libtcc.c | 6 | ||||
| -rw-r--r-- | tcc.h | 3 | ||||
| -rw-r--r-- | tccasm.c | 35 | ||||
| -rw-r--r-- | tccgen.c | 29 |
4 files changed, 29 insertions, 44 deletions
@@ -72,12 +72,6 @@ ST_DATA void *rt_prog_main; #endif /* ALL_IN_ONE */ /********************************************************/ -#ifndef CONFIG_TCC_ASM_LABEL -ST_FUNC void asm_label_instr(CString *) -{ - error("inline asm() not supported"); -} -#endif #ifndef CONFIG_TCC_ASM ST_FUNC void asm_instr(void) { @@ -122,7 +122,6 @@ #if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67) #define CONFIG_TCC_ASM #endif -#define CONFIG_TCC_ASM_LABEL /* object format selection */ #if defined(TCC_TARGET_C67) @@ -1073,6 +1072,7 @@ ST_FUNC int type_size(CType *type, int *a); ST_FUNC void mk_pointer(CType *type); ST_FUNC void vstore(void); ST_FUNC void inc(int post, int c); +ST_FUNC void parse_asm_str(CString *astr); ST_FUNC int lvalue_type(int t); ST_FUNC void indir(void); ST_FUNC void unary(void); @@ -1196,7 +1196,6 @@ ST_FUNC int tcc_load_coff(TCCState * s1, int fd); /* ------------ tccasm.c ------------ */ ST_FUNC void asm_instr(void); -ST_FUNC void asm_label_instr(CString *); ST_FUNC void asm_global_instr(void); #ifdef CONFIG_TCC_ASM @@ -18,8 +18,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifdef CONFIG_TCC_ASM - #include "tcc.h" ST_FUNC int asm_get_local_label_name(TCCState *s1, unsigned int n) @@ -993,37 +991,6 @@ static void parse_asm_operands(ASMOperand *operands, int *nb_operands_ptr, } } -#endif - -static void parse_asm_str(CString *astr) -{ - skip('('); - /* read the string */ - if (tok != TOK_STR) - expect("string constant"); - cstr_new(astr); - while (tok == TOK_STR) { - /* XXX: add \0 handling too ? */ - cstr_cat(astr, tokc.cstr->data); - next(); - } - cstr_ccat(astr, '\0'); -} - -/* Parse an asm label and return the label - * Don't forget to free the CString in the caller! */ -static void asm_label_instr(CString *astr) -{ - next(); - parse_asm_str(astr); - skip(')'); -#ifdef ASM_DEBUG - printf("asm_alias: \"%s\"\n", (char *)astr->data); -#endif -} - -#ifdef CONFIG_TCC_ASM - /* parse the GCC asm() instruction */ ST_FUNC void asm_instr(void) { @@ -1154,5 +1121,3 @@ ST_FUNC void asm_global_instr(void) cstr_free(&astr); } - -#endif @@ -2991,6 +2991,33 @@ static inline void convert_parameter_type(CType *pt) } } +ST_FUNC void parse_asm_str(CString *astr) +{ + skip('('); + /* read the string */ + if (tok != TOK_STR) + expect("string constant"); + cstr_new(astr); + while (tok == TOK_STR) { + /* XXX: add \0 handling too ? */ + cstr_cat(astr, tokc.cstr->data); + next(); + } + cstr_ccat(astr, '\0'); +} + +/* Parse an asm label and return the label + * Don't forget to free the CString in the caller! */ +static void asm_label_instr(CString *astr) +{ + next(); + parse_asm_str(astr); + skip(')'); +#ifdef ASM_DEBUG + printf("asm_alias: \"%s\"\n", (char *)astr->data); +#endif +} + static void post_type(CType *type, AttributeDef *ad) { int n, l, t1, arg_size, align; @@ -5325,7 +5352,7 @@ ST_FUNC void decl(int l) Sym *sym; AttributeDef ad; - /* + /* * type.ref must be either a valid reference or NULL for external_sym to * work. As type = btype is executed before external_sym is call, setting * btype.ref to 0 is enough. |
