[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[creduce-dev] More llvm-svn changes required?
LLVM no longer installs "llvm/Config/config.h", which is good, considering it used to cause macro redefinition conflicts with other autoconf headers.
LLVM also no longer has the raw_fd_ostream overload it used to have.
Clang also uses unique_ptr in setASTConsumer. I think this diff used to be in creduce but got lost somewhere along the way.
Should this be applied to a new llvm-svn-compatible branch?
diff --git a/clang_delta/TransformationManager.cpp b/clang_delta/TransformationManager.cpp
index e677930..a06e600 100644
--- a/clang_delta/TransformationManager.cpp
+++ b/clang_delta/TransformationManager.cpp
@@ -22,6 +22,21 @@
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Parse/ParseAST.h"
+/*
+ * Avoid a bunch of warnings about redefinitions of PACKAGE_* symbols.
+ *
+ * The definitions of these symbols are produced by Autoconf et al.
+ * For C-Reduce, we define these in <config.h>.
+ * LLVM defines these symbols in "llvm/Config/config.h".
+ * But we don't care anything about these symbols in this source file.
+ */
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#include "llvm/Config/config.h"
+
#include "Transformation.h"
using namespace clang;
@@ -109,8 +124,7 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg)
ClangInstance->createASTContext();
assert(CurrentTransformationImpl && "Bad transformation instance!");
- ClangInstance->setASTConsumer(
- std::unique_ptr<ASTConsumer>(CurrentTransformationImpl));
+ ClangInstance->setASTConsumer(CurrentTransformationImpl);
Preprocessor &PP = ClangInstance->getPreprocessor();
PP.getBuiltinInfo().InitializeBuiltins(PP.getIdentifierTable(),
PP.getLangOpts());
@@ -149,10 +163,10 @@ llvm::raw_ostream *TransformationManager::getOutStream()
if (OutputFileName.empty())
return &(llvm::outs());
- std::error_code EC;
+ std::string ES;
llvm::raw_fd_ostream *Out = new llvm::raw_fd_ostream(
- OutputFileName, EC, llvm::sys::fs::F_RW);
- assert(!EC && "Cannot open output file!");
+ OutputFileName.c_str(), ES, llvm::sys::fs::F_RW);
+ assert(ES == "" && "Cannot open output file!");
return Out;
}