Annotation of gcc/objc/xforward.c, revision 1.1

1.1     ! root        1: /* GNU Objective C Runtime forward tests program
        !             2:    Copyright (C) 1993 Free Software Foundation, Inc.
        !             3: 
        !             4: Author: Kresten Krab Thorup
        !             5: 
        !             6: This file is part of GNU CC.
        !             7: 
        !             8: GNU CC is free software; you can redistribute it and/or modify it under the
        !             9:    terms of the GNU General Public License as published by the Free Software
        !            10:    Foundation; either version 2, or (at your option) any later version.
        !            11: 
        !            12: GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY
        !            13:    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
        !            14:    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
        !            15:    details.
        !            16: 
        !            17: You should have received a copy of the GNU General Public License along with
        !            18:    GNU CC; see the file COPYING.  If not, write to the Free Software
        !            19:    Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !            20: 
        !            21: 
        !            22: #include <stdio.h>
        !            23: #include "gstddef.h"
        !            24: 
        !            25: static char* flags = "";
        !            26: 
        !            27: void try_func (a, b)
        !            28:      size_t a;
        !            29:      size_t b;
        !            30: {
        !            31:    if ((a==5432) && (b==12))
        !            32:      printf(flags);
        !            33:    exit (0);
        !            34: }
        !            35: 
        !            36: void do_apply (xx, y)
        !            37:      void* xx;
        !            38:      size_t y;
        !            39: {
        !            40:   __builtin_apply((void*)try_func, xx, 200) ;
        !            41: }
        !            42: 
        !            43: #define try(what)       \
        !            44:       what[0] = 5432;   \
        !            45:       what[1] = 12;     \
        !            46:       do_apply(af, 1234)
        !            47: 
        !            48: void test_apply (a, b) 
        !            49:      size_t a;
        !            50:      size_t b;
        !            51: {
        !            52:   union frame {
        !            53:     struct { size_t* args; } a;
        !            54:     struct { size_t* args; size_t regs[2]; } b;
        !            55:     struct { size_t* args; void* struct_return; size_t regs[2]; } c;
        !            56:   } *af;
        !            57:   af = __builtin_apply_args();
        !            58:   if ((af->b.regs[0] == 2345) && (af->b.regs[1] == 6789))
        !            59:     { flags=" -DREG_ARGS\n";  try (af->b.regs); }
        !            60:   if ((af->c.regs[0] == 2345) && (af->c.regs[1] == 6789))
        !            61:     { flags=" -DREG_ARGS -DSTRUCT_RETURN\n"; try (af->c.regs); }
        !            62:   if ((af->a.args[0] == 2345) && (af->a.args[1] == 6789))
        !            63:     { flags=" -DSTACK_ARGS\n"; try (af->a.args); }
        !            64:   exit (0);
        !            65: }
        !            66: 
        !            67: void main () 
        !            68: {
        !            69:   test_apply (2345, 6789);
        !            70: }

unix.superglobalmegacorp.com

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