History

struct variable behind guard, proper macro check, and remove some whitespace.

Wrap runtime_main as per its declaration in tcc.h. Fix preprocessor check for TCC_ARM_EABI macro definition.

Joseph Poirier committed 13 years ago

Commit 0650ab01 parent fbb48412 files · +56 −54Browse files

Unified · Split

2 files
  1. arm-gen.c +17 −17
  2. libtcc.c +39 −37
arm-gen.c+17−17
@@ -1,6 +1,6 @@
1/*1/*
2 * ARMv4 code generator for TCC2 * ARMv4 code generator for TCC
3 * 3 *
4 * Copyright (c) 2003 Daniel Gl�ckner4 * Copyright (c) 2003 Daniel Gl�ckner
5 * Copyright (c) 2012 Thomas Preud'homme5 * Copyright (c) 2012 Thomas Preud'homme
6 *6 *
@@ -46,7 +46,7 @@ · 39 unmodified lines
46#define RC_INT 0x0001 /* generic integer register */46#define RC_INT 0x0001 /* generic integer register */
47#define RC_FLOAT 0x0002 /* generic float register */47#define RC_FLOAT 0x0002 /* generic float register */
48#define RC_R0 0x000448#define RC_R0 0x0004
49#define RC_R1 0x0008 49#define RC_R1 0x0008
50#define RC_R2 0x001050#define RC_R2 0x0010
51#define RC_R3 0x002051#define RC_R3 0x0020
52#define RC_R12 0x004052#define RC_R12 0x0040
@@ -211,7 +211,7 @@ void o(uint32_t i) · 158 unmodified lines
211 cur_text_section->data[ind++] = i&255;211 cur_text_section->data[ind++] = i&255;
212 i>>=8;212 i>>=8;
213 cur_text_section->data[ind++] = i&255;213 cur_text_section->data[ind++] = i&255;
214 i>>=8; 214 i>>=8;
215 cur_text_section->data[ind++] = i&255;215 cur_text_section->data[ind++] = i&255;
216 i>>=8;216 i>>=8;
217 cur_text_section->data[ind++] = i;217 cur_text_section->data[ind++] = i;
@@ -506,7 +506,7 @@ void load(int r, SValue *sv) · 288 unmodified lines
506 sign=1;506 sign=1;
507 fc=-fc;507 fc=-fc;
508 }508 }
509 509
510 v = fr & VT_VALMASK;510 v = fr & VT_VALMASK;
511 if (fr & VT_LVAL) {511 if (fr & VT_LVAL) {
512 uint32_t base = 0xB; // fp512 uint32_t base = 0xB; // fp
@@ -645,8 +645,8 @@ void store(int r, SValue *sv) · 132 unmodified lines
645 sign=1;645 sign=1;
646 fc=-fc;646 fc=-fc;
647 }647 }
648 648
649 v = fr & VT_VALMASK; 649 v = fr & VT_VALMASK;
650 if (fr & VT_LVAL || fr == VT_LOCAL) {650 if (fr & VT_LVAL || fr == VT_LOCAL) {
651 uint32_t base = 0xb;651 uint32_t base = 0xb;
652 if(v < VT_CONST) {652 if(v < VT_CONST) {
@@ -660,16 +660,16 @@ void store(int r, SValue *sv) · 7 unmodified lines
660 v1.sym=sv->sym;660 v1.sym=sv->sym;
661 load(base=14, &v1);661 load(base=14, &v1);
662 fc=sign=0;662 fc=sign=0;
663 v=VT_LOCAL; 663 v=VT_LOCAL;
664 }664 }
665 if(v == VT_LOCAL) {665 if(v == VT_LOCAL) {
666 if(is_float(ft)) {666 if(is_float(ft)) {
667 calcaddr(&base,&fc,&sign,1020,2);667 calcaddr(&base,&fc,&sign,1020,2);
668#ifdef TCC_ARM_VFP668#ifdef TCC_ARM_VFP
669 op=0xED000A00; /* fsts */669 op=0xED000A00; /* fsts */
670 if(!sign) 670 if(!sign)
671 op|=0x800000; 671 op|=0x800000;
672 if ((ft & VT_BTYPE) != VT_FLOAT) 672 if ((ft & VT_BTYPE) != VT_FLOAT)
673 op|=0x100; /* fsts -> fstd */673 op|=0x100; /* fsts -> fstd */
674 o(op|(vfpr(r)<<12)|(fc>>2)|(base<<16));674 o(op|(vfpr(r)<<12)|(fc>>2)|(base<<16));
675#else675#else
@@ -802,7 +802,7 @@ int assign_fpreg(struct avail_regs *avregs, int align, int size) · 126 unmodified lines
802 802
803/* Return 1 if this function returns via an sret pointer, 0 otherwise */803/* Return 1 if this function returns via an sret pointer, 0 otherwise */
804ST_FUNC int gfunc_sret(CType *vt, CType *ret, int *ret_align) {804ST_FUNC int gfunc_sret(CType *vt, CType *ret, int *ret_align) {
805#if TCC_ARM_EABI805#ifdef TCC_ARM_EABI
806 int size, align;806 int size, align;
807 size = type_size(vt, &align);807 size = type_size(vt, &align);
808 if (size > 4) {808 if (size > 4) {
@@ -855,7 +855,7 @@ void gfunc_call(int nb_args) · 46 unmodified lines
855 vtop[-nb_args+1]=tmp;855 vtop[-nb_args+1]=tmp;
856 --nb_args;856 --nb_args;
857 }857 }
858 858
859 vpushi(0), nb_args++;859 vpushi(0), nb_args++;
860 vtop->type.t = VT_LLONG;860 vtop->type.t = VT_LLONG;
861#endif861#endif
@@ -1023,7 +1023,7 @@ void gfunc_call(int nb_args) · 161 unmodified lines
1023 size = 8;1023 size = 8;
1024 else1024 else
1025 size = LDOUBLE_SIZE;1025 size = LDOUBLE_SIZE;
1026 1026
1027 if (size == 12)1027 if (size == 12)
1028 r|=0x400000;1028 r|=0x400000;
1029 else if(size == 8)1029 else if(size == 8)
@@ -1362,7 +1362,7 @@ int gtst(int inv, int t) · 332 unmodified lines
1362 return gtst(inv, t);1362 return gtst(inv, t);
1363 } else if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {1363 } else if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) {
1364 /* constant jmp optimization */1364 /* constant jmp optimization */
1365 if ((vtop->c.i != 0) != inv) 1365 if ((vtop->c.i != 0) != inv)
1366 t = gjmp(t);1366 t = gjmp(t);
1367 } else {1367 } else {
1368 v = gv(RC_INT);1368 v = gv(RC_INT);
@@ -1370,7 +1370,7 @@ int gtst(int inv, int t) · 1 unmodified line
1370 vtop->r = VT_CMP;1370 vtop->r = VT_CMP;
1371 vtop->c.i = TOK_NE;1371 vtop->c.i = TOK_NE;
1372 return gtst(inv, t);1372 return gtst(inv, t);
1373 } 1373 }
1374 }1374 }
1375 vtop--;1375 vtop--;
1376 return t;1376 return t;
@@ -1628,7 +1628,7 @@ void gen_opf(int op) · 251 unmodified lines
1628 case TOK_UGE: op=TOK_GE; break;1628 case TOK_UGE: op=TOK_GE; break;
1629 case TOK_UGT: op=TOK_GT; break;1629 case TOK_UGT: op=TOK_GT; break;
1630 }1630 }
1631 1631
1632 vtop->r = VT_CMP;1632 vtop->r = VT_CMP;
1633 vtop->c.i = op;1633 vtop->c.i = op;
1634 return;1634 return;
@@ -1779,7 +1779,7 @@ void gen_opf(int op) · 144 unmodified lines
1779 r=fpr(gv(RC_FLOAT));1779 r=fpr(gv(RC_FLOAT));
1780 vswap();1780 vswap();
1781 r2=fpr(gv(RC_FLOAT));1781 r2=fpr(gv(RC_FLOAT));
1782 } 1782 }
1783 break;1783 break;
1784 default:1784 default:
1785 if(op >= TOK_ULT && op <= TOK_GT) {1785 if(op >= TOK_ULT && op <= TOK_GT) {
libtcc.c+39−37
@@ -1,6 +1,6 @@
1/*1/*
2 * TCC - Tiny C Compiler2 * TCC - Tiny C Compiler
3 * 3 *
4 * Copyright (c) 2001-2004 Fabrice Bellard4 * Copyright (c) 2001-2004 Fabrice Bellard
5 *5 *
6 * This library is free software; you can redistribute it and/or6 * This library is free software; you can redistribute it and/or
@@ -156,7 +156,7 @@ PUB_FUNC char *pstrcat(char *buf, int buf_size, const char *s) · 149 unmodified lines
156{156{
157 int len;157 int len;
158 len = strlen(buf);158 len = strlen(buf);
159 if (len < buf_size) 159 if (len < buf_size)
160 pstrcpy(buf + len, buf_size - len, s);160 pstrcpy(buf + len, buf_size - len, s);
161 return buf;161 return buf;
162}162}
@@ -275,7 +275,7 @@ ST_FUNC void dynarray_add(void ***ptab, int *nb_ptr, void *data) · 112 unmodified lines
275{275{
276 int nb, nb_alloc;276 int nb, nb_alloc;
277 void **pp;277 void **pp;
278 278
279 nb = *nb_ptr;279 nb = *nb_ptr;
280 pp = *ptab;280 pp = *ptab;
281 /* every power of two we double array size */281 /* every power of two we double array size */
@@ -371,7 +371,7 @@ ST_FUNC void section_realloc(Section *sec, unsigned long new_size) · 89 unmodified lines
371{371{
372 unsigned long size;372 unsigned long size;
373 unsigned char *data;373 unsigned char *data;
374 374
375 size = sec->data_allocated;375 size = sec->data_allocated;
376 if (size == 0)376 if (size == 0)
377 size = 1;377 size = 1;
@@ -414,7 +414,7 @@ ST_FUNC Section *find_section(TCCState *s1, const char *name) · 36 unmodified lines
414 int i;414 int i;
415 for(i = 1; i < s1->nb_sections; i++) {415 for(i = 1; i < s1->nb_sections; i++) {
416 sec = s1->sections[i];416 sec = s1->sections[i];
417 if (!strcmp(name, sec->name)) 417 if (!strcmp(name, sec->name))
418 return sec;418 return sec;
419 }419 }
420 /* sections are created as PROGBITS */420 /* sections are created as PROGBITS */
@@ -423,7 +423,7 @@ ST_FUNC Section *find_section(TCCState *s1, const char *name) · 2 unmodified lines
423 423
424/* update sym->c so that it points to an external symbol in section424/* update sym->c so that it points to an external symbol in section
425 'section' with value 'value' */425 'section' with value 'value' */
426ST_FUNC void put_extern_sym2(Sym *sym, Section *section, 426ST_FUNC void put_extern_sym2(Sym *sym, Section *section,
427 addr_t value, unsigned long size,427 addr_t value, unsigned long size,
428 int can_add_underscore)428 int can_add_underscore)
429{429{
@@ -434,7 +434,7 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section, · 4 unmodified lines
434 434
435 if (section == NULL)435 if (section == NULL)
436 sh_num = SHN_UNDEF;436 sh_num = SHN_UNDEF;
437 else if (section == SECTION_ABS) 437 else if (section == SECTION_ABS)
438 sh_num = SHN_ABS;438 sh_num = SHN_ABS;
439 else439 else
440 sh_num = section->sh_num;440 sh_num = section->sh_num;
@@ -468,13 +468,13 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section, · 27 unmodified lines
468 switch(sym->v) {468 switch(sym->v) {
469#ifdef TCC_TARGET_PE469#ifdef TCC_TARGET_PE
470 /* XXX: we rely only on malloc hooks */470 /* XXX: we rely only on malloc hooks */
471 case TOK_malloc: 471 case TOK_malloc:
472 case TOK_free: 472 case TOK_free:
473 case TOK_realloc: 473 case TOK_realloc:
474 case TOK_memalign: 474 case TOK_memalign:
475 case TOK_calloc: 475 case TOK_calloc:
476#endif476#endif
477 case TOK_memcpy: 477 case TOK_memcpy:
478 case TOK_memmove:478 case TOK_memmove:
479 case TOK_memset:479 case TOK_memset:
480 case TOK_strlen:480 case TOK_strlen:
@@ -527,7 +527,7 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section, · 46 unmodified lines
527 }527 }
528}528}
529 529
530ST_FUNC void put_extern_sym(Sym *sym, Section *section, 530ST_FUNC void put_extern_sym(Sym *sym, Section *section,
531 addr_t value, unsigned long size)531 addr_t value, unsigned long size)
532{532{
533 put_extern_sym2(sym, section, value, size, 1);533 put_extern_sym2(sym, section, value, size, 1);
@@ -567,7 +567,7 @@ static void error1(TCCState *s1, int is_warning, const char *fmt, va_list ap) · 33 unmodified lines
567{567{
568 char buf[2048];568 char buf[2048];
569 BufferedFile **pf, *f;569 BufferedFile **pf, *f;
570 570
571 buf[0] = '\0';571 buf[0] = '\0';
572 /* use upper file if inline ":asm:" or token ":paste:" */572 /* use upper file if inline ":asm:" or token ":paste:" */
573 for (f = file; f && f->filename[0] == ':'; f = f->prev)573 for (f = file; f && f->filename[0] == ':'; f = f->prev)
@@ -718,28 +718,28 @@ static int tcc_compile(TCCState *s1) · 144 unmodified lines
718 718
719 cur_text_section = NULL;719 cur_text_section = NULL;
720 funcname = "";720 funcname = "";
721 anon_sym = SYM_FIRST_ANOM; 721 anon_sym = SYM_FIRST_ANOM;
722 722
723 /* file info: full path + filename */723 /* file info: full path + filename */
724 section_sym = 0; /* avoid warning */724 section_sym = 0; /* avoid warning */
725 if (s1->do_debug) {725 if (s1->do_debug) {
726 section_sym = put_elf_sym(symtab_section, 0, 0, 726 section_sym = put_elf_sym(symtab_section, 0, 0,
727 ELFW(ST_INFO)(STB_LOCAL, STT_SECTION), 0, 727 ELFW(ST_INFO)(STB_LOCAL, STT_SECTION), 0,
728 text_section->sh_num, NULL);728 text_section->sh_num, NULL);
729 getcwd(buf, sizeof(buf));729 getcwd(buf, sizeof(buf));
730#ifdef _WIN32730#ifdef _WIN32
731 normalize_slashes(buf);731 normalize_slashes(buf);
732#endif732#endif
733 pstrcat(buf, sizeof(buf), "/");733 pstrcat(buf, sizeof(buf), "/");
734 put_stabs_r(buf, N_SO, 0, 0, 734 put_stabs_r(buf, N_SO, 0, 0,
735 text_section->data_offset, text_section, section_sym);735 text_section->data_offset, text_section, section_sym);
736 put_stabs_r(file->filename, N_SO, 0, 0, 736 put_stabs_r(file->filename, N_SO, 0, 0,
737 text_section->data_offset, text_section, section_sym);737 text_section->data_offset, text_section, section_sym);
738 }738 }
739 /* an elf symbol of type STT_FILE must be put so that STB_LOCAL739 /* an elf symbol of type STT_FILE must be put so that STB_LOCAL
740 symbols can be safely used */740 symbols can be safely used */
741 put_elf_sym(symtab_section, 0, 0, 741 put_elf_sym(symtab_section, 0, 0,
742 ELFW(ST_INFO)(STB_LOCAL, STT_FILE), 0, 742 ELFW(ST_INFO)(STB_LOCAL, STT_FILE), 0,
743 SHN_ABS, file->filename);743 SHN_ABS, file->filename);
744 744
745 /* define some often used types */745 /* define some often used types */
@@ -794,7 +794,7 @@ static int tcc_compile(TCCState *s1) · 48 unmodified lines
794 794
795 /* end of translation unit info */795 /* end of translation unit info */
796 if (s1->do_debug) {796 if (s1->do_debug) {
797 put_stabs_r(NULL, N_SO, 0, 0, 797 put_stabs_r(NULL, N_SO, 0, 0,
798 text_section->data_offset, text_section, section_sym);798 text_section->data_offset, text_section, section_sym);
799 }799 }
800 }800 }
@@ -803,7 +803,7 @@ static int tcc_compile(TCCState *s1) · 2 unmodified lines
803 803
804 /* reset define stack, but leave -Dsymbols (may be incorrect if804 /* reset define stack, but leave -Dsymbols (may be incorrect if
805 they are undefined) */805 they are undefined) */
806 free_defines(define_start); 806 free_defines(define_start);
807 807
808 gen_inline_functions();808 gen_inline_functions();
809 809
@@ -1004,13 +1004,13 @@ LIBTCCAPI TCCState *tcc_new(void) · 194 unmodified lines
1004 /* symbols are always generated for linking stage */1004 /* symbols are always generated for linking stage */
1005 symtab_section = new_symtab(s, ".symtab", SHT_SYMTAB, 0,1005 symtab_section = new_symtab(s, ".symtab", SHT_SYMTAB, 0,
1006 ".strtab",1006 ".strtab",
1007 ".hashtab", SHF_PRIVATE); 1007 ".hashtab", SHF_PRIVATE);
1008 strtab_section = symtab_section->link;1008 strtab_section = symtab_section->link;
1009 s->symtab = symtab_section;1009 s->symtab = symtab_section;
1010 1010
1011 /* private symbol table for dynamic symbols */1011 /* private symbol table for dynamic symbols */
1012 s->dynsymtab_section = new_symtab(s, ".dynsymtab", SHT_SYMTAB, SHF_PRIVATE,1012 s->dynsymtab_section = new_symtab(s, ".dynsymtab", SHT_SYMTAB, SHF_PRIVATE,
1013 ".dynstrtab", 1013 ".dynstrtab",
1014 ".dynhashtab", SHF_PRIVATE);1014 ".dynhashtab", SHF_PRIVATE);
1015 s->alacarte_link = 1;1015 s->alacarte_link = 1;
1016 s->nocommon = 1;1016 s->nocommon = 1;
@@ -1026,7 +1026,9 @@ LIBTCCAPI TCCState *tcc_new(void) · 9 unmodified lines
1026#ifdef TCC_TARGET_I3861026#ifdef TCC_TARGET_I386
1027 s->seg_size = 32;1027 s->seg_size = 32;
1028#endif1028#endif
1029#ifdef TCC_IS_NATIVE
1029 s->runtime_main = "main";1030 s->runtime_main = "main";
1031#endif
1030 return s;1032 return s;
1031}1033}
1032 1034
@@ -1044,7 +1046,7 @@ LIBTCCAPI void tcc_delete(TCCState *s1) · 11 unmodified lines
1044 for(i = 0; i < s1->nb_priv_sections; i++)1046 for(i = 0; i < s1->nb_priv_sections; i++)
1045 free_section(s1->priv_sections[i]);1047 free_section(s1->priv_sections[i]);
1046 dynarray_reset(&s1->priv_sections, &s1->nb_priv_sections);1048 dynarray_reset(&s1->priv_sections, &s1->nb_priv_sections);
1047 1049
1048 /* free any loaded DLLs */1050 /* free any loaded DLLs */
1049#ifdef TCC_IS_NATIVE1051#ifdef TCC_IS_NATIVE
1050 for ( i = 0; i < s1->nb_loaded_dlls; i++) {1052 for ( i = 0; i < s1->nb_loaded_dlls; i++) {
@@ -1053,7 +1055,7 @@ LIBTCCAPI void tcc_delete(TCCState *s1) · 2 unmodified lines
1053 dlclose(ref->handle);1055 dlclose(ref->handle);
1054 }1056 }
1055#endif1057#endif
1056 1058
1057 /* free loaded dlls array */1059 /* free loaded dlls array */
1058 dynarray_reset(&s1->loaded_dlls, &s1->nb_loaded_dlls);1060 dynarray_reset(&s1->loaded_dlls, &s1->nb_loaded_dlls);
1059 1061
@@ -1079,7 +1081,7 @@ LIBTCCAPI void tcc_delete(TCCState *s1) · 19 unmodified lines
1079#ifdef TCC_IS_NATIVE1081#ifdef TCC_IS_NATIVE
1080# ifdef HAVE_SELINUX1082# ifdef HAVE_SELINUX
1081 munmap (s1->write_mem, s1->mem_size);1083 munmap (s1->write_mem, s1->mem_size);
1082 munmap (s1->runtime_mem, s1->mem_size); 1084 munmap (s1->runtime_mem, s1->mem_size);
1083# else1085# else
1084 tcc_free(s1->runtime_mem);1086 tcc_free(s1->runtime_mem);
1085# endif1087# endif
@@ -1186,7 +1188,7 @@ ST_FUNC int tcc_add_file_internal(TCCState *s1, const char *filename, int flags) · 100 unmodified lines
1186#endif1188#endif
1187 ret = 0;1189 ret = 0;
1188 } else {1190 } else {
1189 ret = tcc_load_dll(s1, fd, filename, 1191 ret = tcc_load_dll(s1, fd, filename,
1190 (flags & AFF_REFERENCED_DLL) != 0);1192 (flags & AFF_REFERENCED_DLL) != 0);
1191 }1193 }
1192 goto the_end;1194 goto the_end;
@@ -1318,9 +1320,9 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type) · 125 unmodified lines
1318 /* define symbol */1320 /* define symbol */
1319 tcc_define_symbol(s, "__BOUNDS_CHECKING_ON", NULL);1321 tcc_define_symbol(s, "__BOUNDS_CHECKING_ON", NULL);
1320 /* create bounds sections */1322 /* create bounds sections */
1321 bounds_section = new_section(s, ".bounds", 1323 bounds_section = new_section(s, ".bounds",
1322 SHT_PROGBITS, SHF_ALLOC);1324 SHT_PROGBITS, SHF_ALLOC);
1323 lbounds_section = new_section(s, ".lbounds", 1325 lbounds_section = new_section(s, ".lbounds",
1324 SHT_PROGBITS, SHF_ALLOC);1326 SHT_PROGBITS, SHF_ALLOC);
1325 }1327 }
1326#endif1328#endif
@@ -1693,7 +1695,7 @@ static const TCCOption tcc_options[] = { · 366 unmodified lines
1693 { "isystem", TCC_OPTION_isystem, TCC_OPTION_HAS_ARG },1695 { "isystem", TCC_OPTION_isystem, TCC_OPTION_HAS_ARG },
1694 { "nostdinc", TCC_OPTION_nostdinc, 0 },1696 { "nostdinc", TCC_OPTION_nostdinc, 0 },
1695 { "nostdlib", TCC_OPTION_nostdlib, 0 },1697 { "nostdlib", TCC_OPTION_nostdlib, 0 },
1696 { "print-search-dirs", TCC_OPTION_print_search_dirs, 0 }, 1698 { "print-search-dirs", TCC_OPTION_print_search_dirs, 0 },
1697 { "v", TCC_OPTION_v, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },1699 { "v", TCC_OPTION_v, TCC_OPTION_HAS_ARG | TCC_OPTION_NOSEP },
1698 { "w", TCC_OPTION_w, 0 },1700 { "w", TCC_OPTION_w, 0 },
1699 { "pipe", TCC_OPTION_pipe, 0},1701 { "pipe", TCC_OPTION_pipe, 0},
@@ -1859,7 +1861,7 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv) · 159 unmodified lines
1859 goto unsupported_option;1861 goto unsupported_option;
1860 break;1862 break;
1861 case TCC_OPTION_W:1863 case TCC_OPTION_W:
1862 if (tcc_set_warning(s, optarg, 1) < 0 && 1864 if (tcc_set_warning(s, optarg, 1) < 0 &&
1863 s->warn_unsupported)1865 s->warn_unsupported)
1864 goto unsupported_option;1866 goto unsupported_option;
1865 break;1867 break;
@@ -1946,7 +1948,7 @@ PUB_FUNC void tcc_print_stats(TCCState *s, int64_t total_time) · 80 unmodified lines
1946 tt = 0.001;1948 tt = 0.001;
1947 if (total_bytes < 1)1949 if (total_bytes < 1)
1948 total_bytes = 1;1950 total_bytes = 1;
1949 printf("%d idents, %d lines, %d bytes, %0.3f s, %d lines/s, %0.1f MB/s\n", 1951 printf("%d idents, %d lines, %d bytes, %0.3f s, %d lines/s, %0.1f MB/s\n",
1950 tok_ident - TOK_IDENT, total_lines, total_bytes,1952 tok_ident - TOK_IDENT, total_lines, total_bytes,
1951 tt, (int)(total_lines / tt),1953 tt, (int)(total_lines / tt),
1952 total_bytes / tt / 1000000.0);1954 total_bytes / tt / 1000000.0);
@@ -1955,7 +1957,7 @@ PUB_FUNC void tcc_print_stats(TCCState *s, int64_t total_time) · 2 unmodified lines
1955PUB_FUNC void tcc_set_environment(TCCState *s)1957PUB_FUNC void tcc_set_environment(TCCState *s)
1956{1958{
1957 char * path;1959 char * path;
1958 1960
1959 path = getenv("C_INCLUDE_PATH");1961 path = getenv("C_INCLUDE_PATH");
1960 if(path != NULL) {1962 if(path != NULL) {
1961 tcc_add_include_path(s, path);1963 tcc_add_include_path(s, path);

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