| Index: src/IceDefs.h | 
| diff --git a/src/IceDefs.h b/src/IceDefs.h | 
| index 66a500fe950f46a312caa41b1a8d84b4fe2dad36..2d2fdac663378e9c11713508c2f8ba7ae690b741 100644 | 
| --- a/src/IceDefs.h | 
| +++ b/src/IceDefs.h | 
| @@ -23,6 +23,7 @@ | 
| #include <limits> | 
| #include <list> | 
| #include <map> | 
| +#include <mutex> | 
| #include <string> | 
| #include <vector> | 
| #include "llvm/ADT/ArrayRef.h" | 
| @@ -65,6 +66,7 @@ class InstTarget; | 
| class LiveRange; | 
| class Liveness; | 
| class Operand; | 
| +class TargetGlobalLowering; | 
| class TargetLowering; | 
| class Variable; | 
| class VariableDeclaration; | 
| @@ -127,6 +129,13 @@ typedef llvm::BitVector LivenessBV; | 
| typedef uint32_t TimerStackIdT; | 
| typedef uint32_t TimerIdT; | 
|  | 
| +// Use alignas(MaxCacheLineSize) to isolate variables/fields that | 
| +// might be contended while multithreading.  Assumes the maximum cache | 
| +// line size is 64. | 
| +enum { | 
| +  MaxCacheLineSize = 64 | 
| +}; | 
| + | 
| // PNaCl is ILP32, so theoretically we should only need 32-bit offsets. | 
| typedef int32_t RelocOffsetT; | 
| enum { RelocAddrSize = 4 }; | 
| @@ -170,6 +179,8 @@ typedef uint32_t VerboseMask; | 
| typedef llvm::raw_ostream Ostream; | 
| typedef llvm::raw_fd_ostream Fdstream; | 
|  | 
| +typedef std::mutex GlobalLockType; | 
| + | 
| // Reverse range adaptors written in terms of llvm::make_range(). | 
| template <typename T> | 
| llvm::iterator_range<typename T::const_reverse_iterator> | 
|  |