Commit aa85ac98 authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

setting up to pass includes/args from driver to fuzzy parser

parent fdedcba2
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ private:

public:
  FuzzyParsingExternalSemaSource(CompilerInstance &c) : ci(c) {}
  void initialize();
  void initialize(std::vector<std::string> args = {});
  //   void setASTContext(ASTContext *context) { m_Context = context; }
  //   void setFileManager(FileManager *m) { manager = m; }

+3 −3
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ using namespace clang::ast_matchers;
namespace qcor {
namespace compiler {

void FuzzyParsingExternalSemaSource::initialize() {
void FuzzyParsingExternalSemaSource::initialize(std::vector<std::string> args) {
  auto provider = xacc::getService<xacc::IRProvider>("quantum");
  validInstructions = provider->getInstructions();
  validInstructions.push_back("CX");
@@ -51,8 +51,8 @@ void FuzzyParsingExternalSemaSource::initialize() {

  hast = tooling::buildASTFromCodeWithArgs(
      "#include \"heterogeneous.hpp\"\nvoid f(xacc::HeterogeneousMap&& "
      "m, std::vector<double>& x){return;}",
      {"-std=c++14", "-I@CMAKE_INSTALL_PREFIX@/include/xacc"});
      "m, std::vector<double>& x){return;}", args);
      //{"-std=c++14", "-I@CMAKE_INSTALL_PREFIX@/include/xacc","-I/usr/lib/gcc/x86_64-linux-gnu/8/include", "-v"});
  hMapRValue = FirstDeclMatcher<ParmVarDecl>().match(
      hast->getASTContext().getTranslationUnitDecl(), namedDecl(hasName("m")));
  stdVector = FirstDeclMatcher<ParmVarDecl>().match(
+4 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ int main(int argc, char **argv) {
  // Initialize rewriter
  Rewriter Rewrite;

  auto action = new qcor::compiler::QCORFrontendAction(Rewrite, fileName);
  std::vector<std::string> args{"-Wno-dangling", "-std=c++14", 
                                "-I@CMAKE_INSTALL_PREFIX@/include/qcor",
                                "-I@CMAKE_INSTALL_PREFIX@/include/xacc"};
@@ -43,6 +42,8 @@ int main(int argc, char **argv) {
    }
  }

  auto action = new qcor::compiler::QCORFrontendAction(Rewrite, fileName, args);

  if (!accName.empty()) {
    xacc::setAccelerator(accName);
  }
+2 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ void QCORFrontendAction::ExecuteAction() {

  auto fuzzyParser =
      std::make_shared<qcor::compiler::FuzzyParsingExternalSemaSource>(CI);
  fuzzyParser->initialize();
  fuzzyParser->initialize(extraArgs);
  // fuzzyParser->setASTContext(&CI.getASTContext());
  // fuzzyParser->setFileManager(&CI.getFileManager());
  CI.getSema().addExternalSource(fuzzyParser.get());
+4 −3
Original line number Diff line number Diff line
@@ -35,12 +35,13 @@ namespace qcor {
namespace compiler {
class QCORFrontendAction : public clang::ASTFrontendAction {
public:
  QCORFrontendAction(Rewriter &rw, const std::string file)
      : rewriter(rw), fileName(file) {}
  QCORFrontendAction(Rewriter &rw, const std::string file, std::vector<std::string> args)
      : rewriter(rw), fileName(file), extraArgs(args) {}

protected:
  Rewriter &rewriter;
  std::string fileName;
  std::vector<std::string> extraArgs;
  std::unique_ptr<clang::ASTConsumer>
  CreateASTConsumer(clang::CompilerInstance &Compiler,
                    llvm::StringRef /* dummy */) override {