Teach instsimplify to gracefully degrade in the presence of instructions
authorChandler Carruth <chandlerc@gmail.com>
Wed, 21 Mar 2012 10:58:47 +0000 (10:58 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 21 Mar 2012 10:58:47 +0000 (10:58 +0000)
commitff739c1575df58f3926c2f3b6e00a6c45f773523
treea63bafdd55909e0c834d5d27773e7e8aefc0b3d7
parenta8d873e178d45024db9c0ef6a25c6867424785f7
Teach instsimplify to gracefully degrade in the presence of instructions
not attched to a basic block or function. There are conservatively
correct answers in these cases, and this makes the analysis more useful
in contexts where we have a partially formed bit of IR.

I don't have any way to test this directly... suggestions welcome here,
but I'm not seeing anything sadly. I only found this using a subsequent
patch to the inliner which runs instsimplify on partially inlined
instructions, and even then only on a quite large program. I never got
a reasonable testcase out of it, and anything I do get is likely to be
quite fragile due to requiring an interaction of two different passes,
and the only result being a segfault if it goes wrong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153176 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/InstructionSimplify.cpp