IR Restrictions for Late Safepoint Placement

The late safepoint placement pass we released recently has a couple of restrictions on the IR it can handle.  I’ve described those restrictions a couple of different times now, so I figured it was time to put them up somewhere I could reference and that google might find.  A shorter version of this post will …

Continue reading ‘IR Restrictions for Late Safepoint Placement’ »

Code for late safepoint placement available

This post contains the text of an email I sent to the LLVMdev mailing list a few moments ago.  I would encourage you to direct technical questions and comments to that thread, though I will also respond to technical questions in comments posted here. As I’ve mentioned on the mailing list a couple of times …

Continue reading ‘Code for late safepoint placement available’ »

Semantics of 2’s completement integer division

As part of a recent discussion on llvmdev, I had reason to go digging through a couple of language specs examining how they handle edge cases in integer division.  This post is just a summary, mostly so I don’t forget. As a reminder of the basic problem, division (a/b) on N bit 2’s complement integers …

Continue reading ‘Semantics of 2’s completement integer division’ »

Why not use gcroot?

In a couple of recent threads on llvmdev the question of what’s wrong with the existing garbage collection support in llvm has come up.  I’ve partially answered this in a couple of different places, but this post series is an attempt to group everything together into one consistent answer. This post will focus on what …

Continue reading ‘Why not use gcroot?’ »

RFC: GEP as canonical form for pointer addressing

This post is a copy of a proposal I sent to llvmdev yesterday.  I’m posting it here for broader dissemination.  I would like to propose that we designate GEPs as the canonical form for pointer addressing in LLVM IR before CodeGenPrepare. Corollaries It is legal for an optimizer to convert inttoptr+arithmetic+inttoptr sequences to GEPs, but …

Continue reading ‘RFC: GEP as canonical form for pointer addressing’ »