[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[creduce-dev] updated Patch for building with llvm-svn trunk



On 2016.06.20 at 15:08 +0200, Markus Trippelsdorf wrote:

setLangDefaults() was changed again yesterday. Here's an updated patch:

diff --git a/clang_delta/TransformationManager.cpp b/clang_delta/TransformationManager.cpp
index 51e3f4a24536..0b75ec7d1809 100644
--- a/clang_delta/TransformationManager.cpp
+++ b/clang_delta/TransformationManager.cpp
@@ -85,17 +85,27 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg)
   
   ClangInstance->createDiagnostics();
 
+  TargetOptions &TargetOpts = ClangInstance->getTargetOpts();
+  PreprocessorOptions &PreprocessorOpts = ClangInstance->getPreprocessorOpts();
+
+  if (const char *env = getenv("CREDUCE_TARGET_TRIPLE")) {
+    TargetOpts.Triple = std::string(env);
+  } else {
+    TargetOpts.Triple = LLVM_DEFAULT_TARGET_TRIPLE;
+  }
+
+  llvm::Triple T(TargetOpts.Triple);
   CompilerInvocation &Invocation = ClangInstance->getInvocation();
   InputKind IK = FrontendOptions::getInputKindForExtension(
         StringRef(SrcFileName).rsplit('.').second);
   if ((IK == IK_C) || (IK == IK_PreprocessedC)) {
-    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_C);
+    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_C, T, PreprocessorOpts);
   }
   else if ((IK == IK_CXX) || (IK == IK_PreprocessedCXX)) {
     // ISSUE: it might cause some problems when building AST
     // for a function which has a non-declared callee, e.g., 
     // It results an empty AST for the caller. 
-    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_CXX);
+    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_CXX, T, PreprocessorOpts);
   }
   else if(IK == IK_OpenCL) {
     //Commandline parameters
@@ -121,21 +131,13 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg)
     CompilerInvocation::CreateFromArgs(Invocation,
                                        &Args[0], &Args[0] + Args.size(),
                                        ClangInstance->getDiagnostics());
-    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_OpenCL);
+    Invocation.setLangDefaults(ClangInstance->getLangOpts(), IK_OpenCL, T, PreprocessorOpts);
   }
   else {
     ErrorMsg = "Unsupported file type!";
     return false;
   }
 
-  TargetOptions &TargetOpts = ClangInstance->getTargetOpts();
-
-  if (const char *env = getenv("CREDUCE_TARGET_TRIPLE")) {
-    TargetOpts.Triple = std::string(env);
-  } else {
-    TargetOpts.Triple = LLVM_DEFAULT_TARGET_TRIPLE;
-  }
-
   TargetInfo *Target = 
     TargetInfo::CreateTargetInfo(ClangInstance->getDiagnostics(),
                                  ClangInstance->getInvocation().TargetOpts);

-- 
Markus