require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&_VARARGS_H_)) {
    eval 'sub _VARARGS_H_ () {1;}' unless defined(&_VARARGS_H_);
    if(defined( &__GNUC__)  && (defined(&__GNUC__) ? &__GNUC__ : 0) >= 3) {
	eval 'sub va_alist () { &__builtin_va_alist;}' unless defined(&va_alist);
	eval 'sub __va_ellipsis () {...;}' unless defined(&__va_ellipsis);
	eval 'sub va_dcl () { &__builtin_va_alist_t  &__builtin_va_alist; ...;}' unless defined(&va_dcl);
	unless(defined(&__GNUC_VA_LIST)) {
	    eval 'sub __GNUC_VA_LIST () {1;}' unless defined(&__GNUC_VA_LIST);
	}
	eval 'sub va_start {
	    my($v) = @_;
    	    eval q( &__builtin_varargs_start(($v)));
	}' unless defined(&va_start);
	eval 'sub va_end () { &__builtin_va_end;}' unless defined(&va_end);
	eval 'sub va_arg () { &__builtin_va_arg;}' unless defined(&va_arg);
	eval 'sub __va_copy {
	    my($d,$s) = @_;
    	    eval q( &__builtin_va_copy(($d),($s)));
	}' unless defined(&__va_copy);
    } else {
	require 'machine/varargs.ph';
    }
}
1;
