History

Clean up lots of rogue tabs.

Still some more tabs to be taken care of. arm-gen.c and tcccoff.c have so many style issues that I'm just going to throw clang-format at them.

gus knight committed 11 years ago

Commit d6b64e21 parent 410312210 files · +427 −428Browse files

Showing the changes to tccgen.c (1 of 10 files). Show all

Unified · Split

tccgen.c+169−169
@@ -323,7 +323,7 @@ static void apply_visibility(Sym *sym, CType *type) · 322 unmodified lines
323 ElfW(Sym) *esym;323 ElfW(Sym) *esym;
324 324
325 esym = &((ElfW(Sym) *)symtab_section->data)[sym->c];325 esym = &((ElfW(Sym) *)symtab_section->data)[sym->c];
326 vis >>= VT_VIS_SHIFT;326 vis >>= VT_VIS_SHIFT;
327 esym->st_other = (esym->st_other & ~ELFW(ST_VISIBILITY)(-1)) | vis;327 esym->st_other = (esym->st_other & ~ELFW(ST_VISIBILITY)(-1)) | vis;
328 }328 }
329}329}
@@ -1631,7 +1631,7 @@ static inline int is_null_pointer(SValue *p) · 1301 unmodified lines
1631 return 0;1631 return 0;
1632 return ((p->type.t & VT_BTYPE) == VT_INT && p->c.i == 0) ||1632 return ((p->type.t & VT_BTYPE) == VT_INT && p->c.i == 0) ||
1633 ((p->type.t & VT_BTYPE) == VT_LLONG && p->c.ll == 0) ||1633 ((p->type.t & VT_BTYPE) == VT_LLONG && p->c.ll == 0) ||
1634 ((p->type.t & VT_BTYPE) == VT_PTR && p->c.ptr_offset == 0);1634 ((p->type.t & VT_BTYPE) == VT_PTR && p->c.ptr_offset == 0);
1635}1635}
1636 1636
1637static inline int is_integer_btype(int bt)1637static inline int is_integer_btype(int bt)
@@ -1761,18 +1761,18 @@ ST_FUNC void gen_op(int op) · 123 unmodified lines
1761#if 01761#if 0
1762/* #ifdef CONFIG_TCC_BCHECK1762/* #ifdef CONFIG_TCC_BCHECK
1763 The main reason to removing this code:1763 The main reason to removing this code:
1764 #include <stdio.h>1764 #include <stdio.h>
1765 int main ()1765 int main ()
1766 {1766 {
1767 int v[10];1767 int v[10];
1768 int i = 10;1768 int i = 10;
1769 int j = 9;1769 int j = 9;
1770 fprintf(stderr, "v+i-j = %p\n", v+i-j);1770 fprintf(stderr, "v+i-j = %p\n", v+i-j);
1771 fprintf(stderr, "v+(i-j) = %p\n", v+(i-j));1771 fprintf(stderr, "v+(i-j) = %p\n", v+(i-j));
1772 }1772 }
1773 When this code is on. then the output looks like1773 When this code is on. then the output looks like
1774 v+i-j = 0xfffffffe1774 v+i-j = 0xfffffffe
1775 v+(i-j) = 0xbff840001775 v+(i-j) = 0xbff84000
1776 */1776 */
1777 /* if evaluating constant expression, no code should be1777 /* if evaluating constant expression, no code should be
1778 generated, so no bound check */1778 generated, so no bound check */
@@ -2450,18 +2450,18 @@ static void gen_assign_cast(CType *dt) · 671 unmodified lines
2450 dbt = dt->t & VT_BTYPE;2450 dbt = dt->t & VT_BTYPE;
2451 sbt = st->t & VT_BTYPE;2451 sbt = st->t & VT_BTYPE;
2452 if (sbt == VT_VOID || dbt == VT_VOID) {2452 if (sbt == VT_VOID || dbt == VT_VOID) {
2453 if (sbt == VT_VOID && dbt == VT_VOID)2453 if (sbt == VT_VOID && dbt == VT_VOID)
2454 ; /*2454 ; /*
2455 It is Ok if both are void2455 It is Ok if both are void
2456 A test program:2456 A test program:
2457 void func1() {}2457 void func1() {}
2458 void func2() {2458 void func2() {
2459 return func1();2459 return func1();
2460 }2460 }
2461 gcc accepts this program2461 gcc accepts this program
2462 */2462 */
2463 else2463 else
2464 tcc_error("cannot cast from/to void");2464 tcc_error("cannot cast from/to void");
2465 }2465 }
2466 if (dt->t & VT_CONSTANT)2466 if (dt->t & VT_CONSTANT)
2467 tcc_warning("assignment of read-only location");2467 tcc_warning("assignment of read-only location");
@@ -2542,7 +2542,7 @@ ST_FUNC void vstore(void) · 74 unmodified lines
2542 dbt = ft & VT_BTYPE;2542 dbt = ft & VT_BTYPE;
2543 if ((((sbt == VT_INT || sbt == VT_SHORT) && dbt == VT_BYTE) ||2543 if ((((sbt == VT_INT || sbt == VT_SHORT) && dbt == VT_BYTE) ||
2544 (sbt == VT_INT && dbt == VT_SHORT))2544 (sbt == VT_INT && dbt == VT_SHORT))
2545 && !(vtop->type.t & VT_BITFIELD)) {2545 && !(vtop->type.t & VT_BITFIELD)) {
2546 /* optimize char/short casts */2546 /* optimize char/short casts */
2547 delayed_cast = VT_MUSTCAST;2547 delayed_cast = VT_MUSTCAST;
2548 vtop->type.t = ft & (VT_TYPE & ~(VT_BITFIELD | (-1 << VT_STRUCT_SHIFT)));2548 vtop->type.t = ft & (VT_TYPE & ~(VT_BITFIELD | (-1 << VT_STRUCT_SHIFT)));
@@ -2764,20 +2764,20 @@ static void parse_attribute(AttributeDef *ad) · 215 unmodified lines
2764 next();2764 next();
2765 skip(')');2765 skip(')');
2766 break;2766 break;
2767 case TOK_VISIBILITY1:2767 case TOK_VISIBILITY1:
2768 case TOK_VISIBILITY2:2768 case TOK_VISIBILITY2:
2769 skip('(');2769 skip('(');
2770 if (tok != TOK_STR)2770 if (tok != TOK_STR)
2771 expect("visibility(\"default|hidden|internal|protected\")");2771 expect("visibility(\"default|hidden|internal|protected\")");
2772 if (!strcmp (tokc.cstr->data, "default"))2772 if (!strcmp (tokc.cstr->data, "default"))
2773 ad->a.visibility = STV_DEFAULT;2773 ad->a.visibility = STV_DEFAULT;
2774 else if (!strcmp (tokc.cstr->data, "hidden"))2774 else if (!strcmp (tokc.cstr->data, "hidden"))
2775 ad->a.visibility = STV_HIDDEN;2775 ad->a.visibility = STV_HIDDEN;
2776 else if (!strcmp (tokc.cstr->data, "internal"))2776 else if (!strcmp (tokc.cstr->data, "internal"))
2777 ad->a.visibility = STV_INTERNAL;2777 ad->a.visibility = STV_INTERNAL;
2778 else if (!strcmp (tokc.cstr->data, "protected"))2778 else if (!strcmp (tokc.cstr->data, "protected"))
2779 ad->a.visibility = STV_PROTECTED;2779 ad->a.visibility = STV_PROTECTED;
2780 else2780 else
2781 expect("visibility(\"default|hidden|internal|protected\")");2781 expect("visibility(\"default|hidden|internal|protected\")");
2782 next();2782 next();
2783 skip(')');2783 skip(')');
@@ -2973,8 +2973,8 @@ static void struct_decl(CType *type, int u, int tdef) · 189 unmodified lines
2973 while (tok != '}') {2973 while (tok != '}') {
2974 parse_btype(&btype, &ad);2974 parse_btype(&btype, &ad);
2975 while (1) {2975 while (1) {
2976 if (flexible)2976 if (flexible)
2977 tcc_error("flexible array member '%s' not at the end of struct",2977 tcc_error("flexible array member '%s' not at the end of struct",
2978 get_tok_str(v, NULL));2978 get_tok_str(v, NULL));
2979 bit_size = -1;2979 bit_size = -1;
2980 v = 0;2980 v = 0;
@@ -2982,21 +2982,21 @@ static void struct_decl(CType *type, int u, int tdef) · 1 unmodified line
2982 if (tok != ':') {2982 if (tok != ':') {
2983 type_decl(&type1, &ad, &v, TYPE_DIRECT | TYPE_ABSTRACT);2983 type_decl(&type1, &ad, &v, TYPE_DIRECT | TYPE_ABSTRACT);
2984 if (v == 0) {2984 if (v == 0) {
2985 if ((type1.t & VT_BTYPE) != VT_STRUCT)2985 if ((type1.t & VT_BTYPE) != VT_STRUCT)
2986 expect("identifier");2986 expect("identifier");
2987 else {2987 else {
2988 int v = btype.ref->v;2988 int v = btype.ref->v;
2989 if (!(v & SYM_FIELD) && (v & ~SYM_STRUCT) < SYM_FIRST_ANOM) {2989 if (!(v & SYM_FIELD) && (v & ~SYM_STRUCT) < SYM_FIRST_ANOM) {
2990 if (tcc_state->ms_extensions == 0)2990 if (tcc_state->ms_extensions == 0)
2991 expect("identifier");2991 expect("identifier");
2992 }2992 }
2993 }2993 }
2994 }2994 }
2995 if (type_size(&type1, &align) < 0) {2995 if (type_size(&type1, &align) < 0) {
2996 if ((a == TOK_STRUCT) && (type1.t & VT_ARRAY) && c)2996 if ((a == TOK_STRUCT) && (type1.t & VT_ARRAY) && c)
2997 flexible = 1;2997 flexible = 1;
2998 else2998 else
2999 tcc_error("field '%s' has incomplete type",2999 tcc_error("field '%s' has incomplete type",
3000 get_tok_str(v, NULL));3000 get_tok_str(v, NULL));
3001 }3001 }
3002 if ((type1.t & VT_BTYPE) == VT_FUNC ||3002 if ((type1.t & VT_BTYPE) == VT_FUNC ||
@@ -3807,11 +3807,11 @@ ST_FUNC void unary(void) · 804 unmodified lines
3807 gen_cast(&type);3807 gen_cast(&type);
3808 }3808 }
3809 } else if (tok == '{') {3809 } else if (tok == '{') {
3810 /*3810 /*
3811 if (nocode_wanted)3811 if (nocode_wanted)
3812 tcc_error("statement expression in global scope"); */3812 tcc_error("statement expression in global scope"); */
3813 /* this check breaks compilation of the linux 2.4.26 with the meesage:3813 /* this check breaks compilation of the linux 2.4.26 with the meesage:
3814 linux/include/net/tcp.h:945: error: statement expression in global scope */3814 linux/include/net/tcp.h:945: error: statement expression in global scope */
3815 3815
3816 /* save all registers */3816 /* save all registers */
3817 save_regs(0);3817 save_regs(0);
@@ -3872,12 +3872,12 @@ ST_FUNC void unary(void) · 54 unmodified lines
3872 if ((vtop->type.t & VT_BTYPE) == VT_PTR)3872 if ((vtop->type.t & VT_BTYPE) == VT_PTR)
3873 tcc_error("pointer not accepted for unary plus");3873 tcc_error("pointer not accepted for unary plus");
3874 /* In order to force cast, we add zero, except for floating point3874 /* In order to force cast, we add zero, except for floating point
3875 where we really need an noop (otherwise -0.0 will be transformed3875 where we really need an noop (otherwise -0.0 will be transformed
3876 into +0.0). */3876 into +0.0). */
3877 if (!is_float(vtop->type.t)) {3877 if (!is_float(vtop->type.t)) {
3878 vpushi(0);3878 vpushi(0);
3879 gen_op('+');3879 gen_op('+');
3880 }3880 }
3881 break;3881 break;
3882 case TOK_SIZEOF:3882 case TOK_SIZEOF:
3883 case TOK_ALIGNOF1:3883 case TOK_ALIGNOF1:
@@ -4050,20 +4050,20 @@ ST_FUNC void unary(void) · 166 unmodified lines
4050 next();4050 next();
4051 unary();4051 unary();
4052 t = vtop->type.t & VT_BTYPE;4052 t = vtop->type.t & VT_BTYPE;
4053 if (is_float(t)) {4053 if (is_float(t)) {
4054 /* In IEEE negate(x) isn't subtract(0,x), but rather4054 /* In IEEE negate(x) isn't subtract(0,x), but rather
4055 subtract(-0, x). */4055 subtract(-0, x). */
4056 vpush(&vtop->type);4056 vpush(&vtop->type);
4057 if (t == VT_FLOAT)4057 if (t == VT_FLOAT)
4058 vtop->c.f = -0.0f;4058 vtop->c.f = -0.0f;
4059 else if (t == VT_DOUBLE)4059 else if (t == VT_DOUBLE)
4060 vtop->c.d = -0.0;4060 vtop->c.d = -0.0;
4061 else4061 else
4062 vtop->c.ld = -0.0;4062 vtop->c.ld = -0.0;
4063 } else4063 } else
4064 vpushi(0);4064 vpushi(0);
4065 vswap();4065 vswap();
4066 gen_op('-');4066 gen_op('-');
4067 break;4067 break;
4068 case TOK_LAND:4068 case TOK_LAND:
4069 if (!gnu_ext)4069 if (!gnu_ext)
@@ -4142,7 +4142,7 @@ ST_FUNC void unary(void) · 72 unmodified lines
4142 /* if forward reference, we must point to s */4142 /* if forward reference, we must point to s */
4143 if (vtop->r & VT_SYM) {4143 if (vtop->r & VT_SYM) {
4144 vtop->sym = s;4144 vtop->sym = s;
4145 vtop->c.ptr_offset = 0;4145 vtop->c.ptr_offset = 0;
4146 }4146 }
4147 break;4147 break;
4148 }4148 }
@@ -4312,10 +4312,10 @@ ST_FUNC void unary(void) · 163 unmodified lines
4312 4312
4313 4313
4314 size = type_size(&s->type, &align);4314 size = type_size(&s->type, &align);
4315 /* We're writing whole regs often, make sure there's enough4315 /* We're writing whole regs often, make sure there's enough
4316 space. Assume register size is power of 2. */4316 space. Assume register size is power of 2. */
4317 if (regsize > align)4317 if (regsize > align)
4318 align = regsize;4318 align = regsize;
4319 loc = (loc - size) & -align;4319 loc = (loc - size) & -align;
4320 addr = loc;4320 addr = loc;
4321#if defined(TCC_TARGET_X86_64) && !defined(TCC_TARGET_PE)4321#if defined(TCC_TARGET_X86_64) && !defined(TCC_TARGET_PE)
@@ -4610,16 +4610,16 @@ static void expr_cond(void) · 288 unmodified lines
4610 (t2 & (VT_BTYPE | VT_UNSIGNED)) == (VT_LLONG | VT_UNSIGNED))4610 (t2 & (VT_BTYPE | VT_UNSIGNED)) == (VT_LLONG | VT_UNSIGNED))
4611 type.t |= VT_UNSIGNED;4611 type.t |= VT_UNSIGNED;
4612 } else if (bt1 == VT_PTR || bt2 == VT_PTR) {4612 } else if (bt1 == VT_PTR || bt2 == VT_PTR) {
4613 /* If one is a null ptr constant the result type4613 /* If one is a null ptr constant the result type
4614 is the other. */4614 is the other. */
4615 if (is_null_pointer (vtop))4615 if (is_null_pointer (vtop))
4616 type = type1;4616 type = type1;
4617 else if (is_null_pointer (&sv))4617 else if (is_null_pointer (&sv))
4618 type = type2;4618 type = type2;
4619 /* XXX: test pointer compatibility, C99 has more elaborate4619 /* XXX: test pointer compatibility, C99 has more elaborate
4620 rules here. */4620 rules here. */
4621 else4621 else
4622 type = type1;4622 type = type1;
4623 } else if (bt1 == VT_FUNC || bt2 == VT_FUNC) {4623 } else if (bt1 == VT_FUNC || bt2 == VT_FUNC) {
4624 /* XXX: test function pointer compatibility */4624 /* XXX: test function pointer compatibility */
4625 type = bt1 == VT_FUNC ? type1 : type2;4625 type = bt1 == VT_FUNC ? type1 : type2;
@@ -4785,14 +4785,14 @@ static void label_or_decl(int l) · 159 unmodified lines
4785 /* fast test first */4785 /* fast test first */
4786 if (tok >= TOK_UIDENT)4786 if (tok >= TOK_UIDENT)
4787 {4787 {
4788 /* no need to save tokc because tok is an identifier */4788 /* no need to save tokc because tok is an identifier */
4789 last_tok = tok;4789 last_tok = tok;
4790 next();4790 next();
4791 if (tok == ':') {4791 if (tok == ':') {
4792 unget_tok(last_tok);4792 unget_tok(last_tok);
4793 return;4793 return;
4794 }4794 }
4795 unget_tok(last_tok);4795 unget_tok(last_tok);
4796 }4796 }
4797 decl(l);4797 decl(l);
4798}4798}
@@ -4891,10 +4891,10 @@ static void block(int *bsym, int *csym, int *case_sym, int *def_sym, · 92 unmodified lines
4891 Sym *p;4891 Sym *p;
4892 switch(vtop->type.t & VT_BTYPE) {4892 switch(vtop->type.t & VT_BTYPE) {
4893 /* case VT_PTR: */4893 /* case VT_PTR: */
4894 /* this breaks a compilation of the linux kernel v2.4.26 */4894 /* this breaks a compilation of the linux kernel v2.4.26 */
4895 /* pmd_t *new = ({ __asm__ __volatile__("ud2\n") ; ((pmd_t *)1); }); */4895 /* pmd_t *new = ({ __asm__ __volatile__("ud2\n") ; ((pmd_t *)1); }); */
4896 /* Look a commit a80acab: Display error on statement expressions with complex return type */4896 /* Look a commit a80acab: Display error on statement expressions with complex return type */
4897 /* A pointer is not a complex return type */4897 /* A pointer is not a complex return type */
4898 case VT_STRUCT:4898 case VT_STRUCT:
4899 case VT_ENUM:4899 case VT_ENUM:
4900 case VT_FUNC:4900 case VT_FUNC:
@@ -5642,38 +5642,38 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c, · 741 unmodified lines
5642 AttributeDef ad1;5642 AttributeDef ad1;
5643 CType type1;5643 CType type1;
5644 next();5644 next();
5645 if (tcc_state->old_struct_init_code) {5645 if (tcc_state->old_struct_init_code) {
5646 /* an old version of struct initialization.5646 /* an old version of struct initialization.
5647 It have a problems. But with a new version5647 It have a problems. But with a new version
5648 linux 2.4.26 can't load ramdisk.5648 linux 2.4.26 can't load ramdisk.
5649 */5649 */
5650 while (tok == '(') {5650 while (tok == '(') {
5651 par_count++;5651 par_count++;
5652 next();5652 next();
5653 }5653 }
5654 if (!parse_btype(&type1, &ad1))5654 if (!parse_btype(&type1, &ad1))
5655 expect("cast");5655 expect("cast");
5656 type_decl(&type1, &ad1, &n, TYPE_ABSTRACT);5656 type_decl(&type1, &ad1, &n, TYPE_ABSTRACT);
5657 #if 05657 #if 0
5658 if (!is_assignable_types(type, &type1))5658 if (!is_assignable_types(type, &type1))
5659 tcc_error("invalid type for cast");5659 tcc_error("invalid type for cast");
5660 #endif5660 #endif
5661 skip(')');5661 skip(')');
5662 }5662 }
5663 else5663 else
5664 {5664 {
5665 if (tok != '(') {5665 if (tok != '(') {
5666 if (!parse_btype(&type1, &ad1))5666 if (!parse_btype(&type1, &ad1))
5667 expect("cast");5667 expect("cast");
5668 type_decl(&type1, &ad1, &n, TYPE_ABSTRACT);5668 type_decl(&type1, &ad1, &n, TYPE_ABSTRACT);
5669 #if 05669 #if 0
5670 if (!is_assignable_types(type, &type1))5670 if (!is_assignable_types(type, &type1))
5671 tcc_error("invalid type for cast");5671 tcc_error("invalid type for cast");
5672 #endif5672 #endif
5673 skip(')');5673 skip(')');
5674 } else5674 } else
5675 unget_tok(tok);5675 unget_tok(tok);
5676 }5676 }
5677 }5677 }
5678 5678
5679 no_oblock = 1;5679 no_oblock = 1;
@@ -5699,28 +5699,28 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c, · 19 unmodified lines
5699 5699
5700 /* gr: skip fields from same union - ugly. */5700 /* gr: skip fields from same union - ugly. */
5701 while (f->next) {5701 while (f->next) {
5702 int align = 0;5702 int align = 0;
5703 int f_size = type_size(&f->type, &align);5703 int f_size = type_size(&f->type, &align);
5704 int f_type = (f->type.t & VT_BTYPE);5704 int f_type = (f->type.t & VT_BTYPE);
5705 5705
5706 ///printf("index: %2d %08x -- %2d %08x\n", f->c, f->type.t, f->next->c, f->next->type.t);5706 ///printf("index: %2d %08x -- %2d %08x\n", f->c, f->type.t, f->next->c, f->next->type.t);
5707 /* test for same offset */5707 /* test for same offset */
5708 if (f->next->c != f->c)5708 if (f->next->c != f->c)
5709 break;5709 break;
5710 if ((f_type == VT_STRUCT) && (f_size == 0)) {5710 if ((f_type == VT_STRUCT) && (f_size == 0)) {
5711 /*5711 /*
5712 Lets assume a structure of size 0 can't be a member of the union.5712 Lets assume a structure of size 0 can't be a member of the union.
5713 This allow to compile the following code from a linux kernel v2.4.265713 This allow to compile the following code from a linux kernel v2.4.26
5714 typedef struct { } rwlock_t;5714 typedef struct { } rwlock_t;
5715 struct fs_struct {5715 struct fs_struct {
5716 int count;5716 int count;
5717 rwlock_t lock;5717 rwlock_t lock;
5718 int umask;5718 int umask;
5719 };5719 };
5720 struct fs_struct init_fs = { { (1) }, (rwlock_t) {}, 0022, };5720 struct fs_struct init_fs = { { (1) }, (rwlock_t) {}, 0022, };
5721 tcc-0.9.23 can succesfully compile this version of the kernel.5721 tcc-0.9.23 can succesfully compile this version of the kernel.
5722 gcc don't have problems with this code too.5722 gcc don't have problems with this code too.
5723 */5723 */
5724 break;5724 break;
5725 }5725 }
5726 /* if yes, test for bitfield shift */5726 /* if yes, test for bitfield shift */
@@ -5760,21 +5760,21 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c, · 33 unmodified lines
5760 /* just skip expression */5760 /* just skip expression */
5761 parlevel = parlevel1 = 0;5761 parlevel = parlevel1 = 0;
5762 while ((parlevel > 0 || parlevel1 > 0 ||5762 while ((parlevel > 0 || parlevel1 > 0 ||
5763 (tok != '}' && tok != ',')) && tok != -1) {5763 (tok != '}' && tok != ',')) && tok != -1) {
5764 if (tok == '(')5764 if (tok == '(')
5765 parlevel++;5765 parlevel++;
5766 else if (tok == ')') {5766 else if (tok == ')') {
5767 if (parlevel == 0 && parlevel1 == 0)5767 if (parlevel == 0 && parlevel1 == 0)
5768 break;5768 break;
5769 parlevel--;5769 parlevel--;
5770 }5770 }
5771 else if (tok == '{')5771 else if (tok == '{')
5772 parlevel1++;5772 parlevel1++;
5773 else if (tok == '}') {5773 else if (tok == '}') {
5774 if (parlevel == 0 && parlevel1 == 0)5774 if (parlevel == 0 && parlevel1 == 0)
5775 break;5775 break;
5776 parlevel1--;5776 parlevel1--;
5777 }5777 }
5778 next();5778 next();
5779 }5779 }
5780 } else {5780 } else {
@@ -5995,12 +5995,12 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, · 214 unmodified lines
5995 } else {5995 } else {
5996 /* push global reference */5996 /* push global reference */
5997 sym = get_sym_ref(type, sec, addr, size);5997 sym = get_sym_ref(type, sec, addr, size);
5998 vpushsym(type, sym);5998 vpushsym(type, sym);
5999 }5999 }
6000 /* patch symbol weakness */6000 /* patch symbol weakness */
6001 if (type->t & VT_WEAK)6001 if (type->t & VT_WEAK)
6002 weaken_symbol(sym);6002 weaken_symbol(sym);
6003 apply_visibility(sym, type);6003 apply_visibility(sym, type);
6004#ifdef CONFIG_TCC_BCHECK6004#ifdef CONFIG_TCC_BCHECK
6005 /* handles bounds now because the symbol must be defined6005 /* handles bounds now because the symbol must be defined
6006 before for the relocation */6006 before for the relocation */
@@ -6236,11 +6236,11 @@ static int decl0(int l, int is_for_loop_init) · 229 unmodified lines
6236 if (((btype.t & VT_BTYPE) == VT_ENUM ||6236 if (((btype.t & VT_BTYPE) == VT_ENUM ||
6237 (btype.t & VT_BTYPE) == VT_STRUCT) &&6237 (btype.t & VT_BTYPE) == VT_STRUCT) &&
6238 tok == ';') {6238 tok == ';') {
6239 if ((btype.t & VT_BTYPE) == VT_STRUCT) {6239 if ((btype.t & VT_BTYPE) == VT_STRUCT) {
6240 int v = btype.ref->v;6240 int v = btype.ref->v;
6241 if (!(v & SYM_FIELD) && (v & ~SYM_STRUCT) >= SYM_FIRST_ANOM)6241 if (!(v & SYM_FIELD) && (v & ~SYM_STRUCT) >= SYM_FIRST_ANOM)
6242 tcc_warning("unnamed struct/union that defines no instances");6242 tcc_warning("unnamed struct/union that defines no instances");
6243 }6243 }
6244 next();6244 next();
6245 continue;6245 continue;
6246 }6246 }
@@ -6286,7 +6286,7 @@ static int decl0(int l, int is_for_loop_init) · 39 unmodified lines
6286 if (ad.a.func_export)6286 if (ad.a.func_export)
6287 type.t |= VT_EXPORT;6287 type.t |= VT_EXPORT;
6288#endif6288#endif
6289 type.t |= ad.a.visibility << VT_VIS_SHIFT;6289 type.t |= ad.a.visibility << VT_VIS_SHIFT;
6290 6290
6291 if (tok == '{') {6291 if (tok == '{') {
6292 if (l == VT_LOCAL)6292 if (l == VT_LOCAL)
@@ -6327,10 +6327,10 @@ static int decl0(int l, int is_for_loop_init) · 34 unmodified lines
6327 if (sym->type.t & VT_STATIC)6327 if (sym->type.t & VT_STATIC)
6328 type.t = (type.t & ~VT_EXTERN) | VT_STATIC;6328 type.t = (type.t & ~VT_EXTERN) | VT_STATIC;
6329 6329
6330 /* If the definition has no visibility use the6330 /* If the definition has no visibility use the
6331 one from prototype. */6331 one from prototype. */
6332 if (! (type.t & VT_VIS_MASK))6332 if (! (type.t & VT_VIS_MASK))
6333 type.t |= sym->type.t & VT_VIS_MASK;6333 type.t |= sym->type.t & VT_VIS_MASK;
6334 6334
6335 if (!is_compatible_types(&sym->type, &type)) {6335 if (!is_compatible_types(&sym->type, &type)) {
6336 func_error1:6336 func_error1:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t