Cherry-picked from what's in llvm-3.3 ae56e810 2c62eedf Change-Id: Ieecf204662f9b0ce9d2383c1832429a9e5d99f13