aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorJohn Criswell <criswell@uiuc.edu>2003-06-30 21:59:07 +0000
committerJohn Criswell <criswell@uiuc.edu>2003-06-30 21:59:07 +0000
commit7a73b80b9052136c8cd2234eb3433a07df7cf38e (patch)
treef7be65b4a1f3c25d8f5dfc42f6ea73f7bbfec00d /include/llvm
parenteb093fbf6fd2878c842f2f215362597475ef1817 (diff)
downloadexternal_llvm-7a73b80b9052136c8cd2234eb3433a07df7cf38e.tar.gz
external_llvm-7a73b80b9052136c8cd2234eb3433a07df7cf38e.tar.bz2
external_llvm-7a73b80b9052136c8cd2234eb3433a07df7cf38e.zip
Merged in autoconf branch. This provides configuration via the autoconf
system. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7014 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/ADT/BitSetVector.h1
-rw-r--r--include/llvm/ADT/SCCIterator.h1
-rw-r--r--include/llvm/ADT/Tree.h1
-rw-r--r--include/llvm/ADT/ilist1
-rw-r--r--include/llvm/AbstractTypeUser.h11
-rw-r--r--include/llvm/Analysis/DependenceGraph.h1
-rw-r--r--include/llvm/Analysis/Dominators.h1
-rw-r--r--include/llvm/CodeGen/InstrSelection.h1
-rw-r--r--include/llvm/CodeGen/MachineFrameInfo.h1
-rw-r--r--include/llvm/CodeGen/SSARegMap.h1
-rw-r--r--include/llvm/Config/alloca.h46
-rw-r--r--include/llvm/Config/config.h.in210
-rw-r--r--include/llvm/Config/dlfcn.h27
-rw-r--r--include/llvm/Config/fcntl.h18
-rw-r--r--include/llvm/Config/limits.h18
-rw-r--r--include/llvm/Config/malloc.h20
-rw-r--r--include/llvm/Config/memory.h18
-rw-r--r--include/llvm/Config/stdint.h18
-rw-r--r--include/llvm/Config/sys/mman.h24
-rw-r--r--include/llvm/Config/sys/resource.h33
-rw-r--r--include/llvm/Config/sys/stat.h19
-rw-r--r--include/llvm/Config/sys/time.h18
-rw-r--r--include/llvm/Config/sys/types.h19
-rw-r--r--include/llvm/Config/sys/wait.h19
-rw-r--r--include/llvm/Config/time.h28
-rw-r--r--include/llvm/Config/unistd.h18
-rw-r--r--include/llvm/GlobalVariable.h1
-rw-r--r--include/llvm/Instruction.h1
-rw-r--r--include/llvm/Pass.h1
-rw-r--r--include/llvm/Support/Annotation.h2
-rw-r--r--include/llvm/Support/Casting.h2
-rw-r--r--include/llvm/Support/CommandLine.h1
-rw-r--r--include/llvm/Support/Timer.h1
-rw-r--r--include/llvm/System/Signals.h5
-rw-r--r--include/llvm/Target/TargetCacheInfo.h1
-rw-r--r--include/llvm/Target/TargetInstrInfo.h1
-rw-r--r--include/llvm/Target/TargetRegInfo.h1
37 files changed, 574 insertions, 16 deletions
diff --git a/include/llvm/ADT/BitSetVector.h b/include/llvm/ADT/BitSetVector.h
index 898ea53f65..cdcd52d948 100644
--- a/include/llvm/ADT/BitSetVector.h
+++ b/include/llvm/ADT/BitSetVector.h
@@ -24,7 +24,6 @@
#include <vector>
#include <functional>
#include <iostream>
-#include <assert.h>
class BitSetVector {
enum { BITSET_WORDSIZE = sizeof(long)*8 };
diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h
index a06e186a90..4de80f4a84 100644
--- a/include/llvm/ADT/SCCIterator.h
+++ b/include/llvm/ADT/SCCIterator.h
@@ -21,7 +21,6 @@
#include <vector>
#include <stack>
#include <map>
-#include <assert.h>
//--------------------------------------------------------------------------
// class SCC : A simple representation of an SCC in a generic Graph.
diff --git a/include/llvm/ADT/Tree.h b/include/llvm/ADT/Tree.h
index 7a3e9c4350..928c99bca9 100644
--- a/include/llvm/ADT/Tree.h
+++ b/include/llvm/ADT/Tree.h
@@ -9,7 +9,6 @@
#define SUPPORT_TREE_H
#include <vector>
-#include <assert.h>
template<class ConcreteTreeNode, class Payload>
class Tree {
diff --git a/include/llvm/ADT/ilist b/include/llvm/ADT/ilist
index ce906ba559..83a1fe670e 100644
--- a/include/llvm/ADT/ilist
+++ b/include/llvm/ADT/ilist
@@ -31,7 +31,6 @@
#ifndef SUPPORT_ILIST
#define SUPPORT_ILIST
-#include <assert.h>
#include <algorithm>
#include <Support/iterator>
diff --git a/include/llvm/AbstractTypeUser.h b/include/llvm/AbstractTypeUser.h
index 751c5accdc..c1548c82f9 100644
--- a/include/llvm/AbstractTypeUser.h
+++ b/include/llvm/AbstractTypeUser.h
@@ -21,7 +21,16 @@
#ifndef LLVM_ABSTRACT_TYPE_USER_H
#define LLVM_ABSTRACT_TYPE_USER_H
-#include <assert.h>
+//
+// This is the "master" include for assert.h
+// Whether this file needs it or not, it must always include assert.h for the
+// files which include llvm/AbstractTypeUser.h
+//
+// In this way, most every LLVM source file will have access to the assert()
+// macro without having to #include <assert.h> directly.
+//
+#include "Config/assert.h"
+
class Type;
class DerivedType;
diff --git a/include/llvm/Analysis/DependenceGraph.h b/include/llvm/Analysis/DependenceGraph.h
index 65831f980c..9081e4d9eb 100644
--- a/include/llvm/Analysis/DependenceGraph.h
+++ b/include/llvm/Analysis/DependenceGraph.h
@@ -21,7 +21,6 @@
#include <iosfwd>
#include <vector>
#include <utility>
-#include <assert.h>
class Instruction;
class Function;
diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h
index 7881d82125..a38d7d199a 100644
--- a/include/llvm/Analysis/Dominators.h
+++ b/include/llvm/Analysis/Dominators.h
@@ -20,6 +20,7 @@
#include "llvm/Pass.h"
#include <set>
+
class Instruction;
template <typename GraphType> struct GraphTraits;
diff --git a/include/llvm/CodeGen/InstrSelection.h b/include/llvm/CodeGen/InstrSelection.h
index c1ed86ed43..03999db3d0 100644
--- a/include/llvm/CodeGen/InstrSelection.h
+++ b/include/llvm/CodeGen/InstrSelection.h
@@ -8,6 +8,7 @@
#define LLVM_CODEGEN_INSTR_SELECTION_H
#include "llvm/Instruction.h"
+
class Function;
class InstrForest;
class MachineInstr;
diff --git a/include/llvm/CodeGen/MachineFrameInfo.h b/include/llvm/CodeGen/MachineFrameInfo.h
index 5b2b0b5234..6f907e1ff3 100644
--- a/include/llvm/CodeGen/MachineFrameInfo.h
+++ b/include/llvm/CodeGen/MachineFrameInfo.h
@@ -35,7 +35,6 @@ class TargetData;
class TargetRegisterClass;
class MachineFunction;
#include <vector>
-#include <assert.h>
class MachineFrameInfo {
diff --git a/include/llvm/CodeGen/SSARegMap.h b/include/llvm/CodeGen/SSARegMap.h
index b1b00ac049..08fa672a81 100644
--- a/include/llvm/CodeGen/SSARegMap.h
+++ b/include/llvm/CodeGen/SSARegMap.h
@@ -11,6 +11,7 @@
#define LLVM_CODEGEN_SSAREGMAP_H
#include "llvm/Target/MRegisterInfo.h"
+
class TargetRegisterClass;
class SSARegMap {
diff --git a/include/llvm/Config/alloca.h b/include/llvm/Config/alloca.h
new file mode 100644
index 0000000000..f27ef060dc
--- /dev/null
+++ b/include/llvm/Config/alloca.h
@@ -0,0 +1,46 @@
+/*
+ * Header file: alloc.h
+ *
+ * Description:
+ * This header file includes the infamous alloc.h header file if the
+ * autoconf system has found it. It hides all of the autoconf details
+ * from the rest of the application source code.
+ */
+
+#ifndef _CONFIG_ALLOC_H
+#define _CONFIG_ALLOC_H
+
+#include "Config/config.h"
+
+/*
+ * This is a modified version of that suggested by the Autoconf manual.
+ * 1) The #pragma is indented so that pre-ANSI C compilers ignore it.
+ * 2) If alloca.h cannot be found, then try stdlib.h. Some platforms
+ * (notably FreeBSD) defined alloca() there.
+ */
+#ifndef __GNUC__
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ # pragma alloca
+# else
+# ifndef alloca
+ char * alloca ();
+# endif
+# endif
+# endif
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# else
+# error "The function alloca() is required but not found!"
+# endif
+# endif
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/config.h.in b/include/llvm/Config/config.h.in
new file mode 100644
index 0000000000..fd1c8106c1
--- /dev/null
+++ b/include/llvm/Config/config.h.in
@@ -0,0 +1,210 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define to 1 if you have the `elf' library (-lelf). */
+#undef HAVE_LIBELF
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the `papi' library (-lpapi). */
+#undef HAVE_LIBPAPI
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcspn' function. */
+#undef HAVE_STRCSPN
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strspn' function. */
+#undef HAVE_STRSPN
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtod' function. */
+#undef HAVE_STRTOD
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if the `setvbuf' function takes the buffering type as its
+ second argument and the buffer pointer as the third, as on System V before
+ release 3. */
+#undef SETVBUF_REVERSED
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define as `__inline' if that's what the C compiler calls it, or to nothing
+ if it is not supported. */
+#undef inline
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to mark the machine as having little endian */
+#ifndef ENDIAN_LITTLE
+#undef ENDIAN_LITTLE
+#endif
+
+/* Define to mark the machine as having big endian */
+#ifndef ENDIAN_BIG
+#undef ENDIAN_BIG
+#endif
+
+/* Define to indicate how to include hash_map */
+#undef HAVE_STD_EXT_HASH_MAP
+#undef HAVE_GNU_EXT_HASH_MAP
+
+/* Define to incdicate how to include has_set */
+#undef HAVE_STD_EXT_HASH_SET
+#undef HAVE_GNU_EXT_HASH_SET
+
+/* Indicates whether we have STL iterators */
+#undef HAVE_STD_ITERATOR
+
+/* Indicates which slist we should use */
+#undef HAVE_EXT_SLIST
+
+/* Indicates whether we have the MALLINFO functionality */
+#undef HAVE_MALLINFO
+
+/* Indicates if we have MAP_ANONYMOUS */
+#undef HAVE_MMAP_ANONYMOUS
+
+/* Indicates whether we have MMAP header file */
+#undef HAVE_SYS_MMAN_H
+
+/* Indicates that we have assert.h */
+#undef HAVE_ASSERT_H
+
+/* Macros for various header files */
+#undef HAVE_SIGNAL_H
+#undef HAVE_ERRNO_H
+#undef HAVE_SYS_RESOURCE_H
+#undef HAVE_MATH_H
+#undef HAVE_DLFCN_H
+#undef HAVE_LINK_H
diff --git a/include/llvm/Config/dlfcn.h b/include/llvm/Config/dlfcn.h
new file mode 100644
index 0000000000..9beddccbf1
--- /dev/null
+++ b/include/llvm/Config/dlfcn.h
@@ -0,0 +1,27 @@
+/*
+ * Header file: dlfcn.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for dlfcn.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_DLFCN_H
+#define _CONFIG_DLFCN_H
+
+#include "Config/config.h"
+
+/*
+ * According to the man pages on dlopen(), we sometimes need link.h. So,
+ * go grab it just in case.
+ */
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+
+#ifdef HAVE_LINK_H
+#include <link.h>
+#endif
+
+#endif
+
+#endif
diff --git a/include/llvm/Config/fcntl.h b/include/llvm/Config/fcntl.h
new file mode 100644
index 0000000000..267503d6e4
--- /dev/null
+++ b/include/llvm/Config/fcntl.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: fcntl.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for fcntl.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_FCNTL_H
+#define _CONFIG_FCNTL_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/limits.h b/include/llvm/Config/limits.h
new file mode 100644
index 0000000000..da5cd66514
--- /dev/null
+++ b/include/llvm/Config/limits.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: limits.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for limits.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_LIMITS_H
+#define _CONFIG_LIMITS_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/malloc.h b/include/llvm/Config/malloc.h
new file mode 100644
index 0000000000..fa85fc8863
--- /dev/null
+++ b/include/llvm/Config/malloc.h
@@ -0,0 +1,20 @@
+/*
+ * Header file: malloc.h
+ *
+ * Description:
+ * This header file includes the infamous malloc.h header file if the
+ * autoconf system has found it. It hides all of the autoconf details
+ * from the rest of the application source code.
+ */
+
+#ifndef _SUPPORT_MALLOC_H
+#define _SUPPORT_MALLOC_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/memory.h b/include/llvm/Config/memory.h
new file mode 100644
index 0000000000..01d68aea0d
--- /dev/null
+++ b/include/llvm/Config/memory.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: memory.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for memory.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_MEMORY_H
+#define _CONFIG_MEMORY_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/stdint.h b/include/llvm/Config/stdint.h
new file mode 100644
index 0000000000..fe2a076e22
--- /dev/null
+++ b/include/llvm/Config/stdint.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: stdint.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for stdint.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_STDINT_H
+#define _CONFIG_STDINT_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/sys/mman.h b/include/llvm/Config/sys/mman.h
new file mode 100644
index 0000000000..af7affd940
--- /dev/null
+++ b/include/llvm/Config/sys/mman.h
@@ -0,0 +1,24 @@
+/*
+ * Header file: mman.h
+ *
+ * Description:
+ * This header file includes the headers needed for the mmap() system/
+ * function call. It also defines some macros so that all of our calls
+ * to mmap() can act (more or less) the same, regardless of platform.
+ */
+
+#ifndef _CONFIG_MMAN_H
+#define _CONFIG_MMAN_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#ifndef HAVE_MMAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/sys/resource.h b/include/llvm/Config/sys/resource.h
new file mode 100644
index 0000000000..00979b2a89
--- /dev/null
+++ b/include/llvm/Config/sys/resource.h
@@ -0,0 +1,33 @@
+/*
+ * Header file: resource.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for sys/resource.h (if it
+ * lives on the system).
+ */
+
+#ifndef _CONFIG_SYS_RESOURCE_H
+#define _CONFIG_SYS_RESOURCE_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_RESOURCE_H
+
+/*
+ * In LLVM, we use sys/resource.h to use getrusage() and maybe some other
+ * stuff. Some man pages say that you also need sys/time.h and unistd.h.
+ * So, to be paranoid, we will try to include all three if possible.
+ */
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#include <sys/resource.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#endif
+
+#endif
diff --git a/include/llvm/Config/sys/stat.h b/include/llvm/Config/sys/stat.h
new file mode 100644
index 0000000000..7bf33d3f24
--- /dev/null
+++ b/include/llvm/Config/sys/stat.h
@@ -0,0 +1,19 @@
+/*
+ * Header file: stat.h
+ *
+ * Description:
+ * This header file includes the headers needed for the stat() system
+ * call.
+ */
+
+#ifndef _CONFIG_SYS_STAT_H
+#define _CONFIG_SYS_STAT_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/sys/time.h b/include/llvm/Config/sys/time.h
new file mode 100644
index 0000000000..c982b8e0e1
--- /dev/null
+++ b/include/llvm/Config/sys/time.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: time.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for sys/time.h (if it
+ * lives on the system).
+ */
+
+#ifndef _CONFIG_SYS_TIME_H
+#define _CONFIG_SYS_TIME_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/sys/types.h b/include/llvm/Config/sys/types.h
new file mode 100644
index 0000000000..08ec22df28
--- /dev/null
+++ b/include/llvm/Config/sys/types.h
@@ -0,0 +1,19 @@
+/*
+ * Header file: types.h
+ *
+ * Description:
+ * This header file is the autoconf substitute for sys/types.h. It
+ * includes it for us if it exists on this system.
+ */
+
+#ifndef _CONFIG_SYS_TYPES_H
+#define _CONFIG_SYS_TYPES_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/sys/wait.h b/include/llvm/Config/sys/wait.h
new file mode 100644
index 0000000000..5d69fa1ca4
--- /dev/null
+++ b/include/llvm/Config/sys/wait.h
@@ -0,0 +1,19 @@
+/*
+ * Header file: wait.h
+ *
+ * Description:
+ * This header file includes the headers needed for the wait() system
+ * call.
+ */
+
+#ifndef _CONFIG_SYS_WAIT_H
+#define _CONFIG_SYS_WAIT_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#endif
+
diff --git a/include/llvm/Config/time.h b/include/llvm/Config/time.h
new file mode 100644
index 0000000000..4f14d0d0dd
--- /dev/null
+++ b/include/llvm/Config/time.h
@@ -0,0 +1,28 @@
+/*
+ * Header file: time.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for time.h (if it lives
+ * on the system).
+ *
+ * The added benefit of this header file is that it removes the
+ * "time with sys/time" problem.
+ *
+ * According to the autoconf manual, some systems have a sys/time.h that
+ * includes time.h, but time.h is not written to handle multiple
+ * inclusion. This means that a program including sys/time.h cannot
+ * also include time.h.
+ *
+ * This header file fixes that problem.
+ */
+
+#ifndef _CONFIG_TIME_H
+#define _CONFIG_TIME_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+#endif
diff --git a/include/llvm/Config/unistd.h b/include/llvm/Config/unistd.h
new file mode 100644
index 0000000000..72642aeb2a
--- /dev/null
+++ b/include/llvm/Config/unistd.h
@@ -0,0 +1,18 @@
+/*
+ * Header file: unistd.h
+ *
+ * Description:
+ * This header file is the autoconf replacement for unistd.h (if it lives
+ * on the system).
+ */
+
+#ifndef _CONFIG_UNISTD_H
+#define _CONFIG_UNISTD_H
+
+#include "Config/config.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#endif
diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h
index 6fb74a3dbe..1fd004cb80 100644
--- a/include/llvm/GlobalVariable.h
+++ b/include/llvm/GlobalVariable.h
@@ -14,6 +14,7 @@
#define LLVM_GLOBAL_VARIABLE_H
#include "llvm/GlobalValue.h"
+
class Module;
class Constant;
class PointerType;
diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h
index 5f61b2d410..4011794025 100644
--- a/include/llvm/Instruction.h
+++ b/include/llvm/Instruction.h
@@ -9,6 +9,7 @@
#define LLVM_INSTRUCTION_H
#include "llvm/User.h"
+
template<typename SC> struct ilist_traits;
template<typename ValueSubClass, typename ItemParentClass, typename SymTabClass,
typename SubClass> class SymbolTableListTraits;
diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h
index 7ca3fddaf1..344baa02ba 100644
--- a/include/llvm/Pass.h
+++ b/include/llvm/Pass.h
@@ -22,7 +22,6 @@
#ifndef LLVM_PASS_H
#define LLVM_PASS_H
-#include <assert.h>
#include <vector>
#include <map>
#include <iosfwd>
diff --git a/include/llvm/Support/Annotation.h b/include/llvm/Support/Annotation.h
index 8dbad760d7..9642f03c80 100644
--- a/include/llvm/Support/Annotation.h
+++ b/include/llvm/Support/Annotation.h
@@ -16,7 +16,7 @@
#define SUPPORT_ANNOTATION_H
#include <string>
-#include <assert.h>
+
class AnnotationID;
class Annotation;
class Annotable;
diff --git a/include/llvm/Support/Casting.h b/include/llvm/Support/Casting.h
index 491d165083..476d3ae681 100644
--- a/include/llvm/Support/Casting.h
+++ b/include/llvm/Support/Casting.h
@@ -8,8 +8,6 @@
#ifndef SUPPORT_CASTING_H
#define SUPPORT_CASTING_H
-#include <assert.h>
-
//===----------------------------------------------------------------------===//
// isa<x> Support Templates
//===----------------------------------------------------------------------===//
diff --git a/include/llvm/Support/CommandLine.h b/include/llvm/Support/CommandLine.h
index 97b223c738..eb1aa18a0b 100644
--- a/include/llvm/Support/CommandLine.h
+++ b/include/llvm/Support/CommandLine.h
@@ -18,7 +18,6 @@
#include <utility>
#include <cstdarg>
#include "boost/type_traits/object_traits.hpp"
-#include <assert.h>
/// cl Namespace - This namespace contains all of the command line option
/// processing machinery. It is intentionally a short name to make qualified
diff --git a/include/llvm/Support/Timer.h b/include/llvm/Support/Timer.h
index 5cacadaf1c..c36006f25d 100644
--- a/include/llvm/Support/Timer.h
+++ b/include/llvm/Support/Timer.h
@@ -28,7 +28,6 @@
#include <string>
#include <vector>
#include <iosfwd>
-#include <assert.h>
class TimerGroup;
diff --git a/include/llvm/System/Signals.h b/include/llvm/System/Signals.h
index 1445bd461d..86e5f910ba 100644
--- a/include/llvm/System/Signals.h
+++ b/include/llvm/System/Signals.h
@@ -10,6 +10,11 @@
#include <string>
+//
+// This will include the signal handler return type.
+//
+#include "Config/config.h"
+
// RemoveFileOnSignal - This function registers signal handlers to ensure that
// if a signal gets delivered that the named file is removed.
//
diff --git a/include/llvm/Target/TargetCacheInfo.h b/include/llvm/Target/TargetCacheInfo.h
index 6d5d374d2c..822c881c72 100644
--- a/include/llvm/Target/TargetCacheInfo.h
+++ b/include/llvm/Target/TargetCacheInfo.h
@@ -8,7 +8,6 @@
#define LLVM_TARGET_TARGETCACHEINFO_H
#include "Support/DataTypes.h"
-#include <assert.h>
class TargetMachine;
diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h
index 754b3a6e2c..6c585c62af 100644
--- a/include/llvm/Target/TargetInstrInfo.h
+++ b/include/llvm/Target/TargetInstrInfo.h
@@ -9,7 +9,6 @@
#include "Support/DataTypes.h"
#include <vector>
-#include <assert.h>
class MachineInstr;
class TargetMachine;
diff --git a/include/llvm/Target/TargetRegInfo.h b/include/llvm/Target/TargetRegInfo.h
index 1b8c48186b..7808efca07 100644
--- a/include/llvm/Target/TargetRegInfo.h
+++ b/include/llvm/Target/TargetRegInfo.h
@@ -10,7 +10,6 @@
#include "Support/hash_map"
#include <string>
-#include <assert.h>
class TargetMachine;
class IGNode;