1  /* Test "ignore redundant include" facility.
       2  
       3     We must test with C and C++ comments, and null directives, outside
       4     the guard conditional; also, we test guarding with #ifndef and #if
       5     !defined.  -H is used because cpp might confuse the issue by
       6     optimizing out #line markers.  This test only passes if each of the
       7     headers is read exactly once.
       8  
       9     The disgusting regexp in the dg-error line, when stuck into
      10     dg.exp's compiler-output regexp, matches the correct -H output and
      11     only the correct -H output.  It has to be all on one line because
      12     otherwise it will not be interpreted all in one unit.  */
      13  
      14  /* { dg-do compile }
      15     { dg-options "-H" }
      16     { dg-message "mi1c\.h\n\[^\n\]*mi1cc\.h\n\[^\n\]*mi1nd\.h\n\[^\n\]*mi1ndp\.h\n\[^\n\]*mi1x\.h" "redundant include check" { target *-*-* } 0 } */
      17  
      18  #include "mi1c.h"
      19  #include "mi1c.h"
      20  #include "mi1c.h"
      21  
      22  #include "mi1cc.h"
      23  #include "mi1cc.h"
      24  
      25  #include "mi1nd.h"
      26  #include "mi1nd.h"
      27  
      28  #include "mi1ndp.h"
      29  #include "mi1ndp.h"
      30  
      31  #define MIX_H
      32  #include "mi1x.h"
      33  #include "mi1x.h"
      34  
      35  int
      36  main (void)
      37  {
      38    return a + b + c + d;
      39  }