v.g.vassilev added a comment.

In D96033#2766141 <https://reviews.llvm.org/D96033#2766141>, @uweigand wrote:

> In D96033#2765954 <https://reviews.llvm.org/D96033#2765954>, @v.g.vassilev 
> wrote:
>
>> @hubert.reinterpretcast, thanks for the feedback. I have created a patch as 
>> discussed -- https://reviews.llvm.org/D102688
>>
>> @uweigand, thanks for reaching out. I believe the patch above should fix 
>> your setup. Could you confirm?
>
> Unfortunately, it does not.  Changing the triple doesn't affect the 
> architecture the compiler generates code for.   If you wanted to change the 
> compiler to generate code for the architecture the JIT detects, the easiest 
> way would probably be to use (the equivalent of) "-march=native", which 
> causes the compiler to also auto-detect the current processor in the same way 
> as the JIT does.

Ah, okay. Could you try this patch:

  diff --git a/clang/lib/Interpreter/IncrementalExecutor.cpp 
b/clang/lib/Interpreter/IncrementalExecutor.cpp
  index f999e5eceaed..9a368d9122bc 100644
  --- a/clang/lib/Interpreter/IncrementalExecutor.cpp
  +++ b/clang/lib/Interpreter/IncrementalExecutor.cpp
  @@ -26,12 +26,14 @@
   namespace clang {
   
   IncrementalExecutor::IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC,
  -                                         llvm::Error &Err)
  +                                         llvm::Error &Err,
  +                                         const llvm::Triple &Triple)
       : TSCtx(TSC) {
     using namespace llvm::orc;
     llvm::ErrorAsOutParameter EAO(&Err);
   
  -  if (auto JitOrErr = LLJITBuilder().create())
  +  auto JTMB = JITTargetMachineBuilder(Triple);
  +  if (auto JitOrErr = 
LLJITBuilder().setJITTargetMachineBuilder(JTMB).create())
       Jit = std::move(*JitOrErr);
     else {
       Err = JitOrErr.takeError();
  diff --git a/clang/lib/Interpreter/IncrementalExecutor.h 
b/clang/lib/Interpreter/IncrementalExecutor.h
  index c4e33a390942..b4c6ddec1047 100644
  --- a/clang/lib/Interpreter/IncrementalExecutor.h
  +++ b/clang/lib/Interpreter/IncrementalExecutor.h
  @@ -14,6 +14,7 @@
   #define LLVM_CLANG_LIB_INTERPRETER_INCREMENTALEXECUTOR_H
   
   #include "llvm/ADT/StringRef.h"
  +#include "llvm/ADT/Triple.h"
   #include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
   
   #include <memory>
  @@ -34,7 +35,8 @@ class IncrementalExecutor {
     llvm::orc::ThreadSafeContext &TSCtx;
   
   public:
  -  IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, llvm::Error &Err);
  +  IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, llvm::Error &Err,
  +                      const llvm::Triple &Triple);
     ~IncrementalExecutor();
   
     llvm::Error addModule(std::unique_ptr<llvm::Module> M);
  diff --git a/clang/lib/Interpreter/Interpreter.cpp 
b/clang/lib/Interpreter/Interpreter.cpp
  index 79acb5bd6898..025bdb14c54f 100644
  --- a/clang/lib/Interpreter/Interpreter.cpp
  +++ b/clang/lib/Interpreter/Interpreter.cpp
  @@ -16,6 +16,7 @@
   #include "IncrementalExecutor.h"
   #include "IncrementalParser.h"
   
  +#include "clang/AST/ASTContext.h"
   #include "clang/Basic/TargetInfo.h"
   #include "clang/CodeGen/ModuleBuilder.h"
   #include "clang/CodeGen/ObjectFilePCHContainerOperations.h"
  @@ -204,8 +205,11 @@ llvm::Expected<Transaction &> 
Interpreter::Parse(llvm::StringRef Code) {
   llvm::Error Interpreter::Execute(Transaction &T) {
     assert(T.TheModule);
     if (!IncrExecutor) {
  +    const llvm::Triple &Triple =
  +      getCompilerInstance()->getASTContext().getTargetInfo().getTriple();
       llvm::Error Err = llvm::Error::success();
  -    IncrExecutor = std::make_unique<IncrementalExecutor>(*TSCtx, Err);
  +    IncrExecutor = std::make_unique<IncrementalExecutor>(*TSCtx, Err, 
Triple);
  +
       if (Err)
         return Err;
     }


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96033/new/

https://reviews.llvm.org/D96033

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to