[llvm-dev] Managed Languages BOF @ Dev Meeting
Chris Lattner via llvm-dev
llvm-dev at lists.llvm.org
Sun Oct 18 17:56:09 PDT 2015
> On Oct 18, 2015, at 3:20 PM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
>
>
>
> Chris Lattner via llvm-dev wrote:
> > I saw this come up in a recent discussion about LLILC. One simple
> > way to do this is to introduce a new intrinsic, like
> > “llvm.nullcheck(x)” which symbolically represents the null check and
> > bail out in one instruction - instead of the fully elaborated basic
> > block representation (which slows everything down by increasing the
> > height of the CFG).
>
> Is this compile time slowdown just a generic effect of the fact that a
> lot of things in LLVM have O(f(# BBs)) complexity?
Yes.
> Or are there
> specific things (like domtree construction) that suffer due to lots of
> basic blocks?
Yes. :-)
Some things work in time proportional to the depth of the CFG, and each null check adds a level.
>
> > These null checks can be optimized away through
> > standard techniques, and any remaining ones expanded out to LLVM IR
> > before codegen, or as part of lowering to MachineInstrs.
>
> That won't be free, since keeping the control flow explicit does give
> us better optimization in cases where we can sink work into the cold
> throwing path, like these:
I don’t claim it to be optimal. That said, we do sinking at the machine level as well, so we will catch at least some of these cases.
-Chris
More information about the llvm-dev
mailing list