aboutsummaryrefslogtreecommitdiff
path: root/tcc.h
diff options
context:
space:
mode:
authorgrischka <grischka>2016-05-05 10:39:09 +0200
committergrischka <grischka>2016-05-05 10:39:09 +0200
commitcaebbc3ee1071ace94003cdf645f749d2b0a9eed (patch)
treef65c8160f99865717871dfec4a958f985e78aee7 /tcc.h
parent0fbc77cac6d1dff456f7b6b973944038dc1a59c2 (diff)
downloadtinycc-caebbc3ee1071ace94003cdf645f749d2b0a9eed.tar.gz
tinycc-caebbc3ee1071ace94003cdf645f749d2b0a9eed.tar.bz2
tccgen: scope levels for local symbols
... for fast redeclaration checks Also, check function parameters too: void foo(int a) { int a; ... } Also, try to fix struct/union/enum's on different scopes: { struct xxx { int x; }; { struct xxx { int y; }; ... }} and some (probably not all) combination with incomplete declarations "struct xxx;" Replaces 2bfedb18675228c3837c23fa523231f55e102c12 and 07d896c8e5d1b46bf4aebd403c78e5f7ffebe02a Fixes cf95ac399cbce1ea8a519f91dd36a5cfd4ea7943
Diffstat (limited to 'tcc.h')
-rw-r--r--tcc.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/tcc.h b/tcc.h
index aec80b8..c5cf990 100644
--- a/tcc.h
+++ b/tcc.h
@@ -459,7 +459,10 @@ typedef struct AttributeDef {
/* symbol management */
typedef struct Sym {
int v; /* symbol token */
- int asm_label; /* associated asm label */
+ union {
+ int asm_label; /* associated asm label */
+ int scope; /* scope level for locals */
+ };
union {
long r; /* associated register */
struct Attribute a;
@@ -707,7 +710,6 @@ struct TCCState {
Liuux 2.4.26 can't find initrd when compiled with a new algorithm */
int dollars_in_identifiers; /* allows '$' char in indentifiers */
int normalize_inc_dirs; /* remove non-existent or duplicate directories from include paths */
- int no_type_redef_check; /* no local vars redefinition check */
/* warning switches */
int warn_write_strings;