Import prebuilt clang toolchain for linux.
diff --git a/linux-x64/clang/include/llvm/MC/MachineLocation.h b/linux-x64/clang/include/llvm/MC/MachineLocation.h
new file mode 100644
index 0000000..91ed661
--- /dev/null
+++ b/linux-x64/clang/include/llvm/MC/MachineLocation.h
@@ -0,0 +1,59 @@
+//===- llvm/MC/MachineLocation.h --------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+// The MachineLocation class is used to represent a simple location in a machine
+// frame. Locations will be one of two forms; a register or an address formed
+// from a base address plus an offset. Register indirection can be specified by
+// explicitly passing an offset to the constructor.
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MC_MACHINELOCATION_H
+#define LLVM_MC_MACHINELOCATION_H
+
+#include <cstdint>
+#include <cassert>
+
+namespace llvm {
+
+class MachineLocation {
+private:
+ bool IsRegister = false; ///< True if location is a register.
+ unsigned Register = 0; ///< gcc/gdb register number.
+
+public:
+ enum : uint32_t {
+ // The target register number for an abstract frame pointer. The value is
+ // an arbitrary value that doesn't collide with any real target register.
+ VirtualFP = ~0U
+ };
+
+ MachineLocation() = default;
+ /// Create a direct register location.
+ explicit MachineLocation(unsigned R, bool Indirect = false)
+ : IsRegister(!Indirect), Register(R) {}
+
+ bool operator==(const MachineLocation &Other) const {
+ return IsRegister == Other.IsRegister && Register == Other.Register;
+ }
+
+ // Accessors.
+ /// \return true iff this is a register-indirect location.
+ bool isIndirect() const { return !IsRegister; }
+ bool isReg() const { return IsRegister; }
+ unsigned getReg() const { return Register; }
+ void setIsRegister(bool Is) { IsRegister = Is; }
+ void setRegister(unsigned R) { Register = R; }
+};
+
+inline bool operator!=(const MachineLocation &LHS, const MachineLocation &RHS) {
+ return !(LHS == RHS);
+}
+
+} // end namespace llvm
+
+#endif // LLVM_MC_MACHINELOCATION_H