(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
20030807-5.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -fdump-tree-dom2" } */
       3  
       4  extern void abort (void);
       5  struct rtx_def;
       6  typedef struct rtx_def *rtx;
       7  
       8  
       9  struct rtx_def
      10  {
      11  
      12    int code;
      13    unsigned int unchanging:1;
      14  
      15  };
      16  rtx current_sym_addr;
      17  
      18  int
      19  foo ()
      20  {
      21    if (current_sym_addr->code == 42
      22        && (({
      23  	       rtx _rtx = current_sym_addr;
      24  	       if (((_rtx)->code) != 42)
      25  	         abort ();
      26  	       _rtx;}
      27  	   )->unchanging))
      28      return 0;
      29  }
      30  
      31  /* There should be precisely one load of ->code.  If there is
      32     more than, then the dominator optimizations failed.  */
      33  /* { dg-final { scan-tree-dump-times "->code" 1 "dom2"} } */
      34  
      35  /* There should be two IF statements.  One for 'current_sym_addr->code == 42'.
      36     The other one for '(EXPR)->unchanging'.  */
      37  /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
      38