小编cpt*_*azz的帖子

CS1998"方法缺乏等待运营商"背后的原因是什么?

async方法缺少任何await运算符时,C#编译器会生成CS1998警告.

警告背后的原因是什么?

我知道async通过添加状态机和异常处理来引入方法的开销.

警告性能的主要原因是什么?或者有理由通知我,我可能已经忘记了await某个地方?

也许来自语言设计团队的人可以对这一个有所了解...... :)

(请:不要发布说'你可以删除async以使警告消失'的答案.我想知道警告背后的原因和决定,而不是解决问题的方法.)

c# asynchronous async-await

10
推荐指数
1
解决办法
1492
查看次数

LLVM在getAnalysis上传递段错误<DominatorTree>()

我正在尝试为LLVM 3.2优化器构建一个传递,我需要一个支配树.通过DominatorTree从PassManager 请求分析结果,这很容易实现,但即使这个简单的例子也会崩溃.

我究竟做错了什么?

namespace {
  struct Mypass : public FunctionPass { 
    static char ID;

    Mypass() : FunctionPass(ID) { } 

    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
      AU.addRequired<DominatorTree>();
    }

    virtual bool runOnFunction(Function &F) {
      DominatorTree& DT = getAnalysis<DominatorTree>(F);
      return false;
    }
  };
}

char Mypass::ID = 0;
static RegisterPass<Mypass> X("mypass", "My test analysis", true, true);
Run Code Online (Sandbox Code Playgroud)

什么时候打电话

opt --load mypass.so -mypass --debug-pass=Structure test.bc

它立即与segfaults

Pass Arguments:  -targetlibinfo -datalayout -domtree -mypass -preverify -domtree -verify
Target Library Information
Data Layout
  ModulePass Manager …
Run Code Online (Sandbox Code Playgroud)

llvm segmentation-fault

7
推荐指数
1
解决办法
1974
查看次数

LLVM的SelectInst的好处

LLVM有一个SelectInst用于表示表达式的表达式something = cond ? true-part : false-part.

这条指令在IR中有什么好处,编译器?:也可以一直降低到a BranchInst?是否有支持此类指令的CPU?或者select降级为CodeGenerator的跳转?

我认为分析传递可能有好处,因为它select保证了隐含的两个"分支" if.但另一方面,编译器根本不需要使用该指令,因此这些通道必须能够处理brs.

llvm llvm-ir

2
推荐指数
1
解决办法
685
查看次数