OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [20030807-1.c] - Rev 826

Compare with Previous | Blame | View Log

/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dom2" } */
 
struct rtx_def;
typedef struct rtx_def *rtx;
 
 
 
union rtunion_def
{
  int rtint;
};
typedef union rtunion_def rtunion;
 
 
 
struct rtx_def
{
  rtunion fld[1];
 
};
 
static int *uid_cuid;
static int max_uid_cuid;
 
rtx
bar (rtx r)
{
  rtx place = r;
 
  if (place->fld[0].rtint <= max_uid_cuid
      && (place->fld[0].rtint > max_uid_cuid ? insn_cuid (place) :
	  uid_cuid[place->fld[0].rtint]))
    return r;
 
  return 0;
}
 
/* There should be two IF conditionals.  One tests <= max_uid_cuid, the
   other tets the value in uid_cuid.  If either is false the jumps
   are threaded to the return 0.  Which in turn means the path
   which combines the result of those two tests into a new test
   must always be true and it is optimized appropriately.  */
/* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
/* { dg-final { cleanup-tree-dump "dom2" } } */
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.