Annotation of gcc/ginclude/va-clipper.h, revision 1.1

1.1     ! root        1: /* GNU C varargs and stdargs support for Clipper.  */
        !             2: 
        !             3: /* Define __gnuc_va_list. */
        !             4: 
        !             5: #ifndef __GNUC_VA_LIST
        !             6: #define __GNUC_VA_LIST
        !             7: 
        !             8: typedef struct
        !             9: {
        !            10:   int __va_ap;                         /* pointer to stack args */
        !            11:   void *__va_reg[4];                   /* pointer to r0,f0,r1,f1 */
        !            12:   int __va_num;                                /* number of args processed */
        !            13: } __gnuc_va_list;
        !            14: #endif /* not __GNUC_VA_LIST */
        !            15: 
        !            16: 
        !            17: #if defined (_STDARG_H) || defined (_VARARGS_H)
        !            18: #define va_list __gnuc_va_list
        !            19: #define __va_list __gnuc_va_list       /* acc compatibility */
        !            20: 
        !            21: #define _VA_LIST
        !            22: #define _VA_LIST_
        !            23: #define _SYS_INT_STDARG_H              /* acc compatibility */
        !            24: 
        !            25: /* Call __builtin_next_arg even though we aren't using its value, so that
        !            26:    we can verify that LASTARG is correct.  */
        !            27: #ifdef _STDARG_H
        !            28: #define va_start(AP,LASTARG)                   \
        !            29:   (__builtin_next_arg (LASTARG),               \
        !            30:    (AP) = *(va_list *)__builtin_saveregs(),    \
        !            31:    (AP).__va_num = __builtin_args_info (0),    \
        !            32:    (AP).__va_ap += __builtin_args_info (1))
        !            33: #else
        !            34: #define va_alist  __builtin_va_alist
        !            35: /* The ... causes current_function_varargs to be set in cc1.  */
        !            36: #define va_dcl    va_list __builtin_va_alist; ...
        !            37: #define va_start(AP)                           \
        !            38:   ((AP) = *(va_list *)__builtin_saveregs(),    \
        !            39:    (AP).__va_num = __builtin_args_info (0))
        !            40: #endif /* _STDARG_H */
        !            41: 
        !            42: #define __va_rounded_size(TYPE)  \
        !            43:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
        !            44: 
        !            45: #define __va_round(AP,TYPE)                                    \
        !            46:   ((AP).__va_ap = ((AP).__va_ap + __alignof__ (TYPE) - 1 ) &   \
        !            47:    ~(__alignof__ (TYPE) - 1))
        !            48: 
        !            49: #define va_arg(AP, TYPE) \
        !            50:   ((AP).__va_num < 2 && __builtin_classify_type (* (TYPE *)0) < 12     \
        !            51:    ? (__builtin_classify_type (* (TYPE *)0) == 8                       \
        !            52:       ? (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ + 1])              \
        !            53:       : (*(TYPE *)(AP).__va_reg[2 * (AP).__va_num++ ]))                        \
        !            54:    : ((AP).__va_num++, __va_round (AP,TYPE), *((TYPE *)((AP).__va_ap))++))
        !            55: 
        !            56: #define va_end(AP)
        !            57: 
        !            58: #endif /* defined (_STDARG_H) || defined (_VARARGS_H) */

unix.superglobalmegacorp.com

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