[Orc] Add lazy-JITting support for i386.

This patch adds a new class, OrcI386, which contains the hooks needed to
support lazy-JITing on i386 (currently only for Pentium 2 or above, as the JIT
re-entry code uses the FXSAVE/FXRSTOR instructions).

Support for i386 is enabled in the LLI lazy JIT and the Orc C API, and
regression and unit tests are enabled for this architecture.

llvm-svn: 260338
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
index 956daae..412e605 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp
@@ -22,6 +22,11 @@
   switch (T.getArch()) {
     default: return nullptr;
 
+    case Triple::x86: {
+      typedef orc::LocalJITCompileCallbackManager<orc::OrcI386> CCMgrT;
+      return llvm::make_unique<CCMgrT>(0);
+    };
+
     case Triple::x86_64: {
       typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT;
       return llvm::make_unique<CCMgrT>(0);
@@ -34,6 +39,12 @@
   switch (T.getArch()) {
     default: return nullptr;
 
+    case Triple::x86:
+      return [](){
+        return llvm::make_unique<
+                 orc::LocalIndirectStubsManager<orc::OrcI386>>();
+      };
+
     case Triple::x86_64:
       return [](){
         return llvm::make_unique<