<div dir="ltr">Observe:<div><br></div><div><div>[nix-shell:~/tmp]$ cat test.ll </div><div>define internal fastcc void @foo() {</div><div>Entry:</div><div>  call fastcc void @bar()</div><div>  ret void</div><div>}</div><div><br></div><div>; Function Attrs: alwaysinline</div><div>define internal fastcc void @bar() #0 {</div><div>Entry:</div><div>  ret void</div><div>}</div><div><br></div><div>attributes #0 = { alwaysinline }</div><div><br></div><div><br></div><div>[nix-shell:~/tmp]$ opt test.ll -always-inline -S</div><div>; ModuleID = 'test.ll'</div><div>source_filename = "test.ll"</div><div><br></div><div>define internal fastcc void @foo() {</div><div>Entry:</div><div>  call fastcc void @bar()</div><div>  ret void</div><div>}</div><div><br></div><div>; Function Attrs: alwaysinline</div><div>define internal fastcc void @bar() #0 {</div><div>Entry:</div><div>  ret void</div><div>}</div><div><br></div><div>attributes #0 = { alwaysinline }</div></div><div><br></div><div><br></div><div>If I delete "internal" from foo, then the optimziation pass in fact inlines bar. Is this intentional? Is there a way to make the always inliner pass work on internal functions like this too?</div></div>