[llvm-dev] Opt can't find 'hello' pass

Joshua R Hilke via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 10 16:48:03 PST 2021


cat hello.ll

; ModuleID = 'hello.c'
source_filename = "hello.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @foo() #0 {
entry:
  %a = alloca i32, align 4
  store i32 1, i32* %a, align 4
  %0 = load i32, i32* %a, align 4
  ret i32 %0
}

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" }

!llvm.module.flags = !{!0}
!llvm.ident = !{!1}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{!"clang version 13.0.0 (https://github.com/llvm/llvm-project.git 16e7973c5d8fb543ea9e91735be8610a8b1c262a)”}


$BUILD_DIR/bin/opt -disable-output hello.ll -passes=helloworld

*nothing gets printed*

> On Feb 10, 2021, at 3:23 PM, Arthur Eubanks <aeubanks at google.com> wrote:
> 
> Can you post the .ll file that doesn't work and the command you ran?
> 
> On Wed, Feb 10, 2021 at 3:21 PM Joshua R Hilke <jrhilke at mit.edu <mailto:jrhilke at mit.edu>> wrote:
> 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?
> 
> 
>> On Feb 10, 2021, at 2:11 PM, Arthur Eubanks <aeubanks at google.com <mailto:aeubanks at google.com>> wrote:
>> 
>> That's due to the recent transition to the new pass manager. Adding -enable-new-pm=0 to the opt command should work.
>> 
>> I'll update the documentation to explicitly say that the legacy pass manager is no longer the default in big red letters.
>> 
>> On Wed, Feb 10, 2021 at 1:49 PM Joshua R Hilke via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>> I’m just trying to run the hello world example from the LLVM Writing a Pass Tutorial (https://llvm.org/docs/WritingAnLLVMPass.html <https://llvm.org/docs/WritingAnLLVMPass.html>), but whenever I run:
>> 
>> $BUILD_DIR/bin/clang -c -emit-llvm hello.c
>> 
>> $BUILD_DIR/bin/opt -load $BUILD_DIR/lib/LLVMHello.so -hello < hello.bc > /dev/null
>> 
>> 
>> 
>> I get the following error:
>> 
>> bin/opt: unknown pass name ‘hello’
>> 
>> 
>> 
>> Which seems odd because if I run:
>> 
>> $BUILD_DIR/bin/opt -load $BUILD_DIR/lib/LLVMHello.so --help | grep hello
>> 
>> 
>> I get:
>> 
>> --hello 		- Hello World Pass
>> 
>> 
>> To build LLVM I’m running the following commands from my build directory:
>> 
>> cmake -G Ninja -DLLVM_ENABLE_PROJECTS=‘clang’ ../llvm
>> 
>> cmake --build . 
>> 
>> 
>> Just to clarify, I’m not writing my own pass. Just trying to run the ‘hello’ pass that comes default when building LLVM
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210211/a46d63b0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1846 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210211/a46d63b0/attachment.bin>


More information about the llvm-dev mailing list