view gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* { dg-do compile } */
/* { dg-options "-O2 -fdump-rtl-expand-details" } */
    

union tree_node;
typedef union tree_node *tree;

enum tree_code
{
  ARRAY_TYPE,
  LAST_AND_UNUSED_TREE_CODE
};

struct tree_common
{
  enum tree_code code:8;
};

union tree_node
{
  struct tree_common common;
};

int foo (int);
int get_alias_set (tree);

int
objects_must_conflict_p (t1, t2)
     tree t1, t2;
{

  if ((t1->common.code == ARRAY_TYPE) != (t2
                                          && t2->common.code == ARRAY_TYPE))
    return 11;


  return foo (t2 ? get_alias_set (t2) : 0);
}

/* There should be one assignment of variables to the value zero.  There
   used to be two assignments, but improvements in threading allowed the
   second to be propagated into all its uses and eliminated.   */
/* { dg-final { scan-rtl-dump-times "PART.. = 0" 1 "expand"} } */