summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMComputeBlockSize.cpp
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2018-04-07 05:20:48 +0000
committerTom Stellard <tstellar@redhat.com>2018-04-07 05:20:48 +0000
commit41f61ddb5e6282eaf720910a8bb4997e1aca1506 (patch)
tree5ff1157e21f4524ffdab84a99ddf2d0254e8bac1 /lib/Target/ARM/ARMComputeBlockSize.cpp
parent7b22f8938a1b14e9b3ae7d70a30491d8170b92fc (diff)
Merging r327761:
------------------------------------------------------------------------ r327761 | chandlerc | 2018-03-16 16:51:33 -0700 (Fri, 16 Mar 2018) | 20 lines [GlobalsAA] Fix a pretty terrible bug that has been in GlobalsAA for a long time. The key thing is that we need to create value handles for every function that we create a `FunctionInfo` object around. Without this, when that function is deleted we can end up creating a new function that collides with its address and look up a stale AA result. With that AA result we can in turn miscompile code in ways that break. This is seriously one of the most absurd miscompiles I've seen. It only reproduced for us recently and only when building a very large server with both ThinLTO and PGO. A *HUGE* shout out to Wei Mi who tracked all of this down and came up with this patch. I'm just landing it because I happened to still by at a computer. He or I can work on crafting a test case to hit this (now that we know what to target) but it'll take a while, and we've been chasing this for a long time and need it fix Right Now. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_60@329485 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMComputeBlockSize.cpp')
0 files changed, 0 insertions, 0 deletions