(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
ipa/
pr57539.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O3" } */
       3  
       4  typedef long unsigned int size_t;
       5  typedef struct
       6  {
       7  }
       8  box;
       9  typedef struct
      10  {
      11  }
      12  textpara_t;
      13  typedef struct _dtlink_s Dtlink_t;
      14  typedef struct _dtdisc_s Dtdisc_t;
      15  typedef struct _dtmethod_s Dtmethod_t;
      16  typedef struct _dt_s Dt_t;
      17  typedef void *(*Dtmemory_f) (Dt_t *, void *, size_t, Dtdisc_t *);
      18  typedef void *(*Dtsearch_f) (Dt_t *, void *, int);
      19  typedef void *(*Dtmake_f) (Dt_t *, void *, Dtdisc_t *);
      20  typedef void (*Dtfree_f) (Dt_t *, void *, Dtdisc_t *);
      21  typedef int (*Dtcompar_f) (Dt_t *, void *, void *, Dtdisc_t *);
      22  typedef unsigned int (*Dthash_f) (Dt_t *, void *, Dtdisc_t *);
      23  typedef int (*Dtevent_f) (Dt_t *, int, void *, Dtdisc_t *);
      24  struct _dtlink_s
      25  {
      26    Dtlink_t *right;
      27  };
      28  struct _dtdisc_s
      29  {
      30    int key;
      31    int size;
      32    int link;
      33    Dtmake_f makef;
      34    Dtfree_f freef;
      35    Dtcompar_f comparf;
      36    Dthash_f hashf;
      37    Dtmemory_f memoryf;
      38    Dtevent_f eventf;
      39  };
      40  struct _dt_s
      41  {
      42    Dtsearch_f searchf;
      43  };
      44  extern Dtmethod_t *Dtobag;
      45  extern Dt_t *dtopen (Dtdisc_t *, Dtmethod_t *);
      46  extern Dtlink_t *dtflatten (Dt_t *);
      47  typedef struct Agobj_s Agobj_t;
      48  typedef struct Agraph_s Agraph_t;
      49  typedef struct Agnode_s Agnode_t;
      50  typedef struct Agedge_s Agedge_t;
      51  typedef struct Agdesc_s Agdesc_t;
      52  typedef struct Agdisc_s Agdisc_t;
      53  typedef struct Agrec_s Agrec_t;
      54  struct Agobj_s
      55  {
      56    Agrec_t *data;
      57  };
      58  struct Agdesc_s
      59  {
      60  };
      61  extern Agraph_t *agopen (char *name, Agdesc_t desc, Agdisc_t * disc);
      62  extern Agnode_t *agfstnode (Agraph_t * g);
      63  extern Agnode_t *agnxtnode (Agraph_t * g, Agnode_t * n);
      64  extern Agedge_t *agedge (Agraph_t * g, Agnode_t * t, Agnode_t * h, char *name,
      65  			 int createflag);
      66  extern Agedge_t *agfstout (Agraph_t * g, Agnode_t * n);
      67  extern Agedge_t *agnxtout (Agraph_t * g, Agedge_t * e);
      68  extern Agdesc_t Agdirected, Agstrictdirected, Agundirected,
      69    Agstrictundirected;
      70  typedef struct Agraph_s graph_t;
      71  typedef struct Agnode_s node_t;
      72  typedef struct Agedge_s edge_t;
      73  typedef union inside_t
      74  {
      75    unsigned short minlen;
      76  }
      77  Agedgeinfo_t;
      78  extern void *gmalloc (size_t);
      79  typedef enum
      80  { AM_NONE, AM_VOR, AM_SCALE, AM_NSCALE, AM_SCALEXY, AM_PUSH, AM_PUSHPULL,
      81      AM_ORTHO, AM_ORTHO_YX, AM_ORTHOXY, AM_ORTHOYX, AM_PORTHO, AM_PORTHO_YX,
      82      AM_PORTHOXY, AM_PORTHOYX, AM_COMPRESS, AM_VPSC, AM_IPSEP, AM_PRISM }
      83  adjust_mode;
      84  typedef struct nitem
      85  {
      86    Dtlink_t link;
      87    int val;
      88    node_t *cnode;
      89    box bb;
      90  }
      91  nitem;
      92  typedef int (*distfn) (box *, box *);
      93  typedef int (*intersectfn) (nitem *, nitem *);
      94  int agnnodes (graph_t *);
      95  int overlaps (nitem *, int);
      96  static int
      97  cmpitem (Dt_t * d, int *p1, int *p2, Dtdisc_t * disc)
      98  {
      99  }
     100  static Dtdisc_t constr =
     101    { __builtin_offsetof (nitem, val), sizeof (int), __builtin_offsetof (nitem,
     102  								       link),
     103  ((Dtmake_f) 0), ((Dtfree_f) 0), (Dtcompar_f) cmpitem, ((Dthash_f) 0), ((Dtmemory_f) 0),
     104  ((Dtevent_f) 0) };
     105  static int
     106  distX (box * b1, box * b2)
     107  {
     108  }
     109  
     110  static int
     111  intersectY0 (nitem * p, nitem * q)
     112  {
     113  }
     114  
     115  static int
     116  intersectY (nitem * p, nitem * q)
     117  {
     118  }
     119  
     120  static void
     121  mapGraphs (graph_t * g, graph_t * cg, distfn dist)
     122  {
     123    node_t *n;
     124    edge_t *e;
     125    edge_t *ce;
     126    node_t *t;
     127    node_t *h;
     128    nitem *tp;
     129    nitem *hp;
     130    int delta;
     131    for (n = agfstnode (g); n; n = agnxtnode (g, n))
     132      {
     133        for (e = agfstout (g, n); e; e = agnxtout (g, e))
     134  	{
     135  	  delta = dist (&tp->bb, &hp->bb);
     136  	  ce = agedge (cg, t, h, ((void *) 0), 1);
     137  	  if ((((Agedgeinfo_t *) (((Agobj_t *) (ce))->data))->minlen) < delta)
     138  	    {
     139  	      if ((((Agedgeinfo_t *) (((Agobj_t *) (ce))->data))->minlen) ==
     140  		  0.0)
     141  		{
     142  		}
     143  	    }
     144  	}
     145      }
     146  }
     147  
     148  static graph_t *
     149  mkNConstraintG (graph_t * g, Dt_t * list, intersectfn intersect, distfn dist)
     150  {
     151    nitem *p;
     152    nitem *nxp;
     153    edge_t *e;
     154    graph_t *cg = agopen ("cg", Agstrictdirected, ((Agdisc_t *) 0));
     155    for (p = (nitem *) dtflatten (list); p;
     156         p = (nitem *) (((Dtlink_t *) ((Dtlink_t *) p))->right))
     157      {
     158        for (nxp = (nitem *) (((Dtlink_t *) ((Dtlink_t *) p))->right); nxp;
     159  	   nxp = (nitem *) (((Dtlink_t *) ((Dtlink_t *) nxp))->right))
     160  	{
     161  	  if (intersect (p, nxp))
     162  	    {
     163  	      e = agedge (cg, p->cnode, nxp->cnode, ((void *) 0), 1);
     164  	    }
     165    }} for (p = (nitem *) dtflatten (list); p;
     166  	    p = (nitem *) (((Dtlink_t *) ((Dtlink_t *) p))->right))
     167      {
     168      }
     169  }
     170  
     171  static graph_t *
     172  mkConstraintG (graph_t * g, Dt_t * list, intersectfn intersect, distfn dist)
     173  {
     174    graph_t *vg;
     175    graph_t *cg = agopen ("cg", Agstrictdirected, ((Agdisc_t *) 0));
     176    mapGraphs (vg, cg, dist);
     177  }
     178  
     179  static void
     180  constrainX (graph_t * g, nitem * nlist, int nnodes, intersectfn ifn,
     181  	    int ortho)
     182  {
     183    Dt_t *list = dtopen (&constr, Dtobag);
     184    nitem *p = nlist;
     185    graph_t *cg;
     186    int i;
     187    for (i = 0; i < nnodes; i++)
     188      {
     189        (*(((Dt_t *) (list))->searchf)) ((list), (void *) (p), 0000001);
     190        p++;
     191    } if (ortho)
     192      cg = mkConstraintG (g, list, ifn, distX);
     193    else
     194      cg = mkNConstraintG (g, list, ifn, distX);
     195  }
     196  
     197  int
     198  cAdjust (graph_t * g, int mode)
     199  {
     200    int ret, i, nnodes = agnnodes (g);
     201    nitem *nlist = (nitem *) gmalloc ((nnodes) * sizeof (nitem));
     202    node_t *n;
     203    for (n = agfstnode (g); n; n = agnxtnode (g, n))
     204      {
     205      }
     206    if (overlaps (nlist, nnodes))
     207      {
     208        switch ((adjust_mode) mode)
     209  	{
     210  	case AM_ORTHOXY:
     211  	  constrainX (g, nlist, nnodes, intersectY, 1);
     212  	case AM_ORTHO:
     213  	  constrainX (g, nlist, nnodes, intersectY0, 1);
     214  	  constrainX (g, nlist, nnodes, intersectY, 1);
     215  	case AM_PORTHO:
     216  	default:
     217  	  constrainX (g, nlist, nnodes, intersectY0, 0);
     218  	}
     219      }
     220  }