<div dir="ltr">Adding the -debug-pass-manager flag to the opt commands shows what's going on:<div><br><div><font face="monospace">Starting llvm::Module pass manager run.<br>Running pass: VerifierPass on C:/src/tmp/a.ll<br>Running analysis: VerifierAnalysis on C:/src/tmp/a.ll<br>Running analysis: InnerAnalysisManagerProxy<llvm::FunctionAnalysisManager, llvm::Module> on C:/src/tmp/a.ll<br>Starting llvm::Function pass manager run.<br>Skipping pass HelloWorldPass on foo due to optnone attribute<br>Skipping pass: HelloWorldPass on foo<br>Finished llvm::Function pass manager run.<br>Running pass: VerifierPass on C:/src/tmp/a.ll<br>Finished llvm::Module pass manager run.</font><br></div></div><div><br></div><div>The optnone attribute on a function makes most function passes skip running on the function. You got the IR from the output of clang -O0 which adds that attribute. This is actually briefly mentioned at the end of <a href="https://llvm.org/docs/WritingAnLLVMNewPMPass.html">https://llvm.org/docs/WritingAnLLVMNewPMPass.html</a>.</div><div>Perhaps we can make HelloWorldPass required for demonstration purposes and to avoid this specific problem in the future.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 10, 2021 at 4:48 PM Joshua R Hilke <<a href="mailto:jrhilke@mit.edu">jrhilke@mit.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div>cat hello.ll</div><div><br></div><div><div>; ModuleID = 'hello.c'</div><div>source_filename = "hello.c"</div><div>target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"</div><div>target triple = "x86_64-unknown-linux-gnu"</div><div><br></div><div>; Function Attrs: noinline nounwind optnone uwtable</div><div>define dso_local i32 @foo() #0 {</div><div>entry:</div><div>  %a = alloca i32, align 4</div><div>  store i32 1, i32* %a, align 4</div><div>  %0 = load i32, i32* %a, align 4</div><div>  ret i32 %0</div><div>}</div><div><br></div><div>attributes #0 = { noinline nounwind optnone uwtable "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }</div><div><br></div><div>!llvm.module.flags = !{!0}</div><div>!llvm.ident = !{!1}</div><div><br></div><div>!0 = !{i32 1, !"wchar_size", i32 4}</div><div>!1 = !{!"clang version 13.0.0 (<a href="https://github.com/llvm/llvm-project.git" target="_blank">https://github.com/llvm/llvm-project.git</a> 16e7973c5d8fb543ea9e91735be8610a8b1c262a)”}</div><div><br></div><div><br></div><div>$BUILD_DIR/bin/opt -disable-output hello.ll -passes=helloworld</div><div><br></div><div>*nothing gets printed*</div><div><br><blockquote type="cite"><div>On Feb 10, 2021, at 3:23 PM, Arthur Eubanks <<a href="mailto:aeubanks@google.com" target="_blank">aeubanks@google.com</a>> wrote:</div><br><div><div dir="ltr">Can you post the .ll file that doesn't work and the command you ran?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 10, 2021 at 3:21 PM Joshua R Hilke <<a href="mailto:jrhilke@mit.edu" target="_blank">jrhilke@mit.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Got it. Thank you. I tried using the new pass manager from the new tutorial as well but was having an issue where the ‘helloworld’ pass would only work if I manually removed all the metadata from my hello.ll file to where the only thing in it was the function. Otherwise, it would run silently and not print out any function names. Any solution to that?<div><br><div></div><div><br><blockquote type="cite"><div>On Feb 10, 2021, at 2:11 PM, Arthur Eubanks <<a href="mailto:aeubanks@google.com" target="_blank">aeubanks@google.com</a>> wrote:</div><br><div><div dir="ltr">That's due to the recent transition to the new pass manager. Adding -enable-new-pm=0 to the opt command should work.<div><br></div><div>I'll update the documentation to explicitly say that the legacy pass manager is no longer the default in big red letters.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 10, 2021 at 1:49 PM Joshua R Hilke via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>I’m just trying to run the hello world example from the LLVM Writing a Pass Tutorial (<a href="https://llvm.org/docs/WritingAnLLVMPass.html" target="_blank">https://llvm.org/docs/WritingAnLLVMPass.html</a>), but whenever I run:<div><br></div><div>$BUILD_DIR/bin/clang -c -emit-llvm hello.c<br><div><br></div><div>$BUILD_DIR/bin/opt -load $BUILD_DIR/lib/LLVMHello.so -hello < hello.bc > /dev/null</div><div><br></div><div><br></div><div><br></div><div>I get the following error:</div><div><br></div><div>bin/opt: unknown pass name ‘hello’</div><div><br></div><div><br></div><div><br></div><div>Which seems odd because if I run:</div><div><br></div><div>$BUILD_DIR/bin/opt -load $BUILD_DIR/lib/LLVMHello.so --help | grep hello</div><div><br></div><div><br></div><div>I get:</div><div><br></div><div>--hello <span style="white-space:pre-wrap">           </span>- Hello World Pass</div><div><br></div><div><br></div><div>To build LLVM I’m running the following commands from my build directory:</div><div><br></div><div>cmake -G Ninja -DLLVM_ENABLE_PROJECTS=‘clang’ ../llvm</div><div><br></div><div>cmake --build . </div><div><br></div><div><br></div><div>Just to clarify, I’m not writing my own pass. Just trying to run the ‘hello’ pass that comes default when building LLVM</div><div><br></div></div></div>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</div></blockquote></div><br></div></div></blockquote></div>
</div></blockquote></div><br></div></div></blockquote></div>