Changeset 6242


Ignore:
Timestamp:
Dec 17, 2018, 2:00:23 PM (3 months ago)
Author:
cameron
Message:

Fix the tracing of PHINodes

Location:
icGREP/icgrep-devel/icgrep/toolchain
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/toolchain/cpudriver.cpp

    r6220 r6242  
    201201    if (LLVM_UNLIKELY(!codegen::TraceOption.empty())) {
    202202        PM.add(createTracePass(iBuilder.get(), codegen::TraceOption));
     203        PM.add(createVerifierPass());
    203204    }
    204205    if (LLVM_UNLIKELY(codegen::ShowIROption != codegen::OmittedOption)) {
     
    326327    TracePass(kernel::KernelBuilder * kb, StringRef to_trace) : ModulePass(ID), iBuilder(kb), mToTrace(to_trace) { }
    327328   
     329    bool addTraceStmt(BasicBlock * BB, BasicBlock::iterator to_trace, BasicBlock::iterator insert_pt) {
     330        bool modified = false;
     331        Type * t = (*to_trace).getType();
     332        //t->dump();
     333        if (t == iBuilder->getBitBlockType()) {
     334            iBuilder->SetInsertPoint(BB, insert_pt);
     335            iBuilder->CallPrintRegister((*to_trace).getName(), &*to_trace);
     336            modified = true;
     337        }
     338        else if (t == iBuilder->getInt64Ty()) {
     339            iBuilder->SetInsertPoint(BB, insert_pt);
     340            iBuilder->CallPrintInt((*to_trace).getName(), &*to_trace);
     341            modified = true;
     342        }
     343        return modified;
     344    }
     345   
    328346    virtual bool runOnModule(Module &M) override;
    329347private:
     
    340358    for (auto & F : M) {
    341359        for (auto & B : F) {
    342             for (BasicBlock::iterator i = B.begin(); i != B.end(); ) {
     360            std::vector<BasicBlock::iterator> tracedPhis;
     361            BasicBlock::iterator i = B.begin();
     362            while (isa<PHINode>(*i)) {
     363                if ((*i).getName().startswith(mToTrace)) {
     364                    tracedPhis.push_back(i);
     365                }
     366                ++i;
     367            }
     368            for (auto t : tracedPhis) {
     369                modified = addTraceStmt(&B, t, i) || modified;
     370            }
     371            while (i != B.end()) {
    343372                auto i0 = i;
    344373                ++i;
    345                 if (!isa<Value>(*i0)) continue;
    346                 StringRef theName = (*i0).getName();
    347                 if (theName.startswith(mToTrace)) {
    348                     //errs() << theName << "\n";
    349                     Type * t = (*i0).getType();
    350                     //t->dump();
    351                     if (t == iBuilder->getBitBlockType()) {
    352                         iBuilder->SetInsertPoint(&B, i);
    353                         iBuilder->CallPrintRegister(theName, &*i0);
    354                         modified = true;
    355                     }
    356                     else if (t == iBuilder->getInt64Ty()) {
    357                         iBuilder->SetInsertPoint(&B, i);
    358                         iBuilder->CallPrintInt(theName, &*i0);
    359                         modified = true;
    360                     }
     374                if ((*i0).getName().startswith(mToTrace)) {
     375                    modified = addTraceStmt(&B, i0, i) || modified;
    361376                }
    362377            }
  • icGREP/icgrep-devel/icgrep/toolchain/toolchain.cpp

    r6228 r6242  
    149149#endif
    150150    cl::ParseCommandLineOptions(argc, argv);
     151    if (!TraceOption.empty()) {
     152        EnableObjectCache = false;
     153        // Maybe we need to force generation of names.
     154        //if (ShowIROption == OmittedOption) {
     155            // ShowIROption = "/dev/null";
     156        //}
     157    }
    151158    if (DebugOptions.getBits() || (ShowIROption != OmittedOption) || (ShowUnoptimizedIROption != OmittedOption)
    152159        #if LLVM_VERSION_INTEGER >= LLVM_VERSION_CODE(3, 7, 0)
Note: See TracChangeset for help on using the changeset viewer.