crazy idea: how off the beaten path is your usage?

Warning: This is a potentially crazy idea, it may not work, and is something I’m probably not going to have time to investigate further.   Feel free to take it and run with it if you’re interested. Given a set of integration tests, a library which is used by the system under test, and a set …

Continue reading ‘crazy idea: how off the beaten path is your usage?’ »

Quick thoughts on WebKit’s B3

I just finished reading Introducing the B3 JIT Compiler and wanted to jot down some thoughts.  Fair warning, this post is being written in a hurry.  I’m focusing on getting down my initial reactions rather than trying for a really well thought out post.  That may follow at a later time or it may not. …

Continue reading ‘Quick thoughts on WebKit’s B3’ »

A perspective on friendly C

I was talking about John Regehr’s Friendly C proposal and recent follow-on post tonight with a friend, and decide to jot down some thoughts in a sharable format. I believe the idea of a friendly C variant is entirely feasible, but it posses an incredibly challenging design problem.  Every change considered needs to be validated …

Continue reading ‘A perspective on friendly C’ »

Observations on fuzzing in practice

I’ve been watching with interest over the last few months as first afl-fuzz, and more recently, llvm-fuzz have come into existence and gained – in some circles at least – prominence.  The interesting part to me is not the technology per se – fuzzing is pretty old news in academic circles – but the fact …

Continue reading ‘Observations on fuzzing in practice’ »

How much does it cost to maintain LLVM?

In early October of 2014, I started collecting changes that I saw fly by on llvm-commits that I thought would be straight-forward to automate.  I was trying to be pretty conservative, so these tend to be pretty basic things: fixing deceptive white space around an if clause, removing the name of a method from it’s …

Continue reading ‘How much does it cost to maintain LLVM?’ »

Best Practice: Stabilize tests before adding them to a test suite

One common mistake to make when adding a new test to an existing test suite is to accidentally add a test which fails in a non-deterministic manner.  Tests which spuriously fail waste developers time and degrade their trust in the test suite as a whole.  To avoid this, before adding a new test to the …

Continue reading ‘Best Practice: Stabilize tests before adding them to a test suite’ »

Feature latency

The primary purpose of this post is to share one of the most insightful articles on engineering management and productivity that I’ve seen in a while. Speeding Up Your Engineering Org, Part I: Beyond the Cost Center Mentality by Edmund Jorgensen of Hut 8 Labs Edmund makes a very important, but entirely non-obvious until someone says …

Continue reading ‘Feature latency’ »

Late Safepoint Placement Overview

In a previous post, I sketched out some of the problems with the existing gcroot mechanism for garbage collection in LLVM.  This post is going to layout the general approach of what we’ve started referring to as “late safepoint placement.”  This will be both fairly high level and fairly short.  Details will follow in future …

Continue reading ‘Late Safepoint Placement Overview’ »

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’ »

Tweaking LLVM to exploit Assume(x)

This post started off as a comment over on Embedded in Academia.  After posting it there, I realized it might be interesting to other folks.  I think this may be the most I’ve ever said publicly about this particular side project. A while back, I took a look at improving LLVM’s ability to handle assumes. …

Continue reading ‘Tweaking LLVM to exploit Assume(x)’ »