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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.dg/] [cpp/] [mi6.c] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
/* Another test case for over-eager multiple include optimization,
/* Another test case for over-eager multiple include optimization,
   where the leading "#if !defined" expression is obtained partially,
   where the leading "#if !defined" expression is obtained partially,
   or wholly, from macros.  Neil Booth, 30 Sep 2001.  */
   or wholly, from macros.  Neil Booth, 30 Sep 2001.  */
 
 
/* { dg-do compile } */
/* { dg-do compile } */
/* { dg-options "" } */
/* { dg-options "" } */
 
 
extern void abort (void);
extern void abort (void);
 
 
/* Each include file should not be subject to MI optimisation, since
/* Each include file should not be subject to MI optimisation, since
   macro definitions can change.  Each header increments the variable
   macro definitions can change.  Each header increments the variable
   VAR if it is defined.
   VAR if it is defined.
 
 
   The first set of inclusions gets the headers into CPP's cache, but
   The first set of inclusions gets the headers into CPP's cache, but
   does nothing since VAR is not defined.  The second set should each
   does nothing since VAR is not defined.  The second set should each
   increment VAR, since none of the initial set should have been
   increment VAR, since none of the initial set should have been
   flagged as optimizable.  */
   flagged as optimizable.  */
 
 
#define EMPTYL
#define EMPTYL
#define EMPTYR
#define EMPTYR
#define NOT !
#define NOT !
#define DEFINED defined (guard)
#define DEFINED defined (guard)
#define NOT_DEFINED ! defined (guard)
#define NOT_DEFINED ! defined (guard)
 
 
#include "mi6a.h"
#include "mi6a.h"
#include "mi6b.h"
#include "mi6b.h"
#include "mi6c.h"
#include "mi6c.h"
#include "mi6d.h"
#include "mi6d.h"
#include "mi6e.h"
#include "mi6e.h"
 
 
/* Define the macro guard, and redefine the macros to something that
/* Define the macro guard, and redefine the macros to something that
   forces compilation of the conditional blocks.  */
   forces compilation of the conditional blocks.  */
#define guard
#define guard
#undef EMPTYL
#undef EMPTYL
#define EMPTYL 1 ||
#define EMPTYL 1 ||
#undef EMPTYR
#undef EMPTYR
#define EMPTYR || 1
#define EMPTYR || 1
#undef NOT
#undef NOT
#define NOT
#define NOT
#undef DEFINED
#undef DEFINED
#define DEFINED 0
#define DEFINED 0
#undef NOT_DEFINED
#undef NOT_DEFINED
#define NOT_DEFINED 1
#define NOT_DEFINED 1
 
 
#define VAR five
#define VAR five
 
 
int
int
main(void)
main(void)
{
{
  unsigned int five = 0;
  unsigned int five = 0;
 
 
#include "mi6a.h"
#include "mi6a.h"
#include "mi6b.h"
#include "mi6b.h"
#include "mi6c.h"
#include "mi6c.h"
#include "mi6d.h"
#include "mi6d.h"
#include "mi6e.h"
#include "mi6e.h"
 
 
  if (five != 5)
  if (five != 5)
    abort ();
    abort ();
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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