/* 
This is a clang style test case for checking that preprocessor
defines match gcc.
*/

/*
RUN: for arch in -m32 -m64; do \
RUN:   for lang in -std=gnu89 -ansi -std=c99 -std=gnu99; do \
RUN:     for input in c objective-c; do \
RUN:       for opts in "-O0" "-O1 -dynamic" "-O2 -static" "-Os"; do     \
RUN:         echo "-- $arch, $lang, $input, $opts --"; \
RUN:         for cc in 0 1; do \
RUN:           if [ "$cc" == 0 ]; then \
RUN:             cc_prog=clang; \
RUN:             output=%t0; \
RUN:           else \
RUN:             cc_prog=gcc; \
RUN:             output=%t1; \
RUN:           fi; \
RUN:           $cc_prog $arch $lang $opts -dM -E -x $input %s | sort > $output; \
RUN:          done; \
RUN:          if (! diff %t0 %t1); then exit 1; fi; \
RUN:       done; \
RUN:     done; \
RUN:   done; \
RUN: done;
*/

/* We don't care about this difference */
#ifdef __PIC__
#if __PIC__ == 1
#undef __PIC__
#undef __pic__
#define __PIC__ 2
#define __pic__ 2
#endif
#endif

/* Undefine things we don't expect to match. */
#undef __DEC_EVAL_METHOD__
#undef __INT16_TYPE__
#undef __INT32_TYPE__
#undef __INT64_TYPE__
#undef __INT8_TYPE__
#undef __SSP__
#undef __APPLE_CC__
#undef __VERSION__
#undef __clang__
#undef __llvm__
#undef __nocona
#undef __nocona__
#undef __k8
#undef __k8__
#undef __tune_nocona__
#undef __tune_core2__
#undef __POINTER_WIDTH__
#undef __INTPTR_TYPE__

#undef __DEC128_DEN__
#undef __DEC128_EPSILON__
#undef __DEC128_MANT_DIG__
#undef __DEC128_MAX_EXP__
#undef __DEC128_MAX__
#undef __DEC128_MIN_EXP__
#undef __DEC128_MIN__
#undef __DEC32_DEN__
#undef __DEC32_EPSILON__
#undef __DEC32_MANT_DIG__
#undef __DEC32_MAX_EXP__
#undef __DEC32_MAX__
#undef __DEC32_MIN_EXP__
#undef __DEC32_MIN__
#undef __DEC64_DEN__
#undef __DEC64_EPSILON__
#undef __DEC64_MANT_DIG__
#undef __DEC64_MAX_EXP__
#undef __DEC64_MAX__
#undef __DEC64_MIN_EXP__
#undef __DEC64_MIN__
