Annotation of GNUtools/cc/va-alpha.h, revision 1.1

1.1     ! root        1: /* GNU C varargs and stdargs support for the DEC Alpha.  */
        !             2: 
        !             3: /* Note:  We must use the name __builtin_savregs.  GCC attaches special
        !             4:    significance to that name.  In particular, regardless of where in a
        !             5:    function __builtin_saveregs is called, GCC moves the call up to the
        !             6:    very start of the function.  */
        !             7: 
        !             8: /* Define __gnuc_va_list.  */
        !             9: 
        !            10: #ifndef __GNUC_VA_LIST
        !            11: #define __GNUC_VA_LIST
        !            12: 
        !            13: typedef struct {
        !            14:   char *__base;                        /* Pointer to first integer register. */
        !            15:   long __offset;               /* Byte offset of args so far. */
        !            16: } __gnuc_va_list;
        !            17: #endif /* not __GNUC_VA_LIST */
        !            18: 
        !            19: /* If this is for internal libc use, don't define anything but
        !            20:    __gnuc_va_list.  */
        !            21: #if defined (_STDARG_H) || defined (_VARARGS_H)
        !            22: 
        !            23: #define va_list __gnuc_va_list
        !            24: #define _VA_LIST
        !            25: #define _VA_LIST_
        !            26: 
        !            27: #if !defined(_STDARG_H)
        !            28: 
        !            29: /* varargs support */
        !            30: #define va_alist __builtin_va_alist
        !            31: #define va_dcl
        !            32: #define va_start(pvar) ((pvar) = * (__gnuc_va_list *) __builtin_saveregs ())
        !            33: 
        !            34: #else /* STDARG.H */
        !            35: 
        !            36: /* ANSI alternative.  */
        !            37: 
        !            38: #define va_start(pvar, firstarg)  \
        !            39:   ((pvar) = *(__gnuc_va_list *) __builtin_saveregs ())
        !            40: 
        !            41: #endif /* _STDARG_H */
        !            42: 
        !            43: #ifndef va_end
        !            44: 
        !            45: #define va_end(__va)
        !            46: 
        !            47: /* Values returned by __builtin_classify_type.  */
        !            48: 
        !            49: enum {
        !            50:   __no_type_class = -1,
        !            51:   __void_type_class,
        !            52:   __integer_type_class,
        !            53:   __char_type_class,
        !            54:   __enumeral_type_class,
        !            55:   __boolean_type_class,
        !            56:   __pointer_type_class,
        !            57:   __reference_type_class,
        !            58:   __offset_type_class,
        !            59:   __real_type_class,
        !            60:   __complex_type_class,
        !            61:   __function_type_class,
        !            62:   __method_type_class,
        !            63:   __record_type_class,
        !            64:   __union_type_class,
        !            65:   __array_type_class,
        !            66:   __string_type_class,
        !            67:   __set_type_class,
        !            68:   __file_type_class,
        !            69:   __lang_type_class
        !            70: };
        !            71: 
        !            72: #endif
        !            73: 
        !            74: /* Note that parameters are always aligned at least to a word boundary
        !            75:    (when passed) regardless of what GCC's __alignof__ operator says.  */
        !            76: 
        !            77: /* Avoid errors if compiling GCC v2 with GCC v1.  */
        !            78: #if __GNUC__ == 1
        !            79: #define __extension__
        !            80: #endif
        !            81: 
        !            82: /* Get the size of a type in bytes, rounded up to an integral number
        !            83:    of words.  */
        !            84: 
        !            85: #define __va_tsize(__type)  \
        !            86:   (((sizeof (__type) + sizeof (long) - 1) / sizeof (long)) * sizeof (long))
        !            87: 
        !            88: #define va_arg(__va, __type)                                           \
        !            89: (*(((__va).__offset += __va_tsize (__type)),                           \
        !            90:    (__type *)((__va).__base + (__va).__offset                          \
        !            91:              - (((__builtin_classify_type (* (__type *) 0)             \
        !            92:                   == __real_type_class) && (__va).__offset <= (6 * 8)) \
        !            93:                 ? (6 * 8) + 8 : __va_tsize (__type)))))
        !            94: 
        !            95: #endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
        !            96: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.