boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

stdarg-builtin-aliases.after (1028B)


      1 typedef va_list __gnuc_va_list;
      2 #define _VA_LIST_DEFINED
      3 
      4 /* gcc/clang spelling bridge for the va_list family. cc.scm only
      5  * recognizes __builtin_va_list and __builtin_va_start/arg/end/copy as
      6  * builtins, so the host-preprocessed flat.c routes va_* through those
      7  * names; on amd64/aarch64 stock tcc 0.9.26 has no such frontend
      8  * keywords, so the same flat.c won't compile back through tcc without
      9  * a bridge. Map __builtin_* onto the va_* macros above, which on
     10  * those arches expand to tcc's __va_start / __va_arg intrinsics. The
     11  * __riscv branch above already names everything by the gcc spelling,
     12  * so gate this block on !__riscv to avoid an infinite-loop expansion
     13  * (__builtin_va_arg -> va_arg -> __builtin_va_arg). */
     14 #ifndef __riscv
     15 typedef va_list __builtin_va_list;
     16 #define __builtin_va_start(ap, last) va_start(ap, last)
     17 #define __builtin_va_end(ap)         va_end(ap)
     18 #define __builtin_va_arg(ap, type)   va_arg(ap, type)
     19 #define __builtin_va_copy(dst, src)  va_copy(dst, src)
     20 #endif
     21 
     22 #endif /* _STDARG_H */