- Nov 11, 2011
-
-
Eli Friedman authored
Get rid of an optimization in SCCP which appears to have many issues. Specifically, it doesn't handle many cases involving undef correctly, and it is missing other checks which lead to it trying to re-mark a value marked as a constant with a different value. It also appears to trigger very rarely. Fixes PR11357. llvm-svn: 144352
-
- Sep 21, 2011
-
-
Eli Friedman authored
Make sure IPSCCP never marks a tracked call as overdefined in SCCPSolver::ResolvedUndefsIn. If we do, we can end up in a situation where a function is resolved to return a constant, but the caller is marked overdefined, which confuses the code later. <rdar://problem/9956541> (again). llvm-svn: 140210
-
- Sep 04, 2011
-
-
Bill Wendling authored
Use Duncan's patch to delete the instructions in reverse order (minus the landingpad and terminator). llvm-svn: 139090
-
- Sep 02, 2011
-
-
Bill Wendling authored
llvm-svn: 139023
-
- Sep 01, 2011
-
-
Bill Wendling authored
Duncan noticed this! llvm-svn: 138967
-
- Aug 31, 2011
-
-
Bill Wendling authored
The landingpad instruction is required in the landing pad block. Because we're not deleting terminating instructions, the invoke may still jump to here (see Transforms/SCCP/2004-11-16-DeadInvoke.ll). Remove all uses of the landingpad instruction, but keep it around until code-gen can remove the basic block. llvm-svn: 138890
-
- Aug 17, 2011
-
-
Eli Friedman authored
Silly mistake from r137777; restore significant isStructTy() checks. While here, be a bit more defensive with unknown instructions. Fixes PR10687. llvm-svn: 137836
-
Eli Friedman authored
making random bad assumptions about instructions which are not explicitly listed. Includes fix for rdar://9956541, a version of "undef ^ undef should return 0 because it's easier than arguing with users". llvm-svn: 137777
-
- Aug 16, 2011
-
-
Eli Friedman authored
Minor bug in SCCP found by inspection. (I don't think it's possible to hit this with a normal pass pipeline, but fixing for completeness.) llvm-svn: 137755
-
- Aug 12, 2011
-
-
Bill Wendling authored
This implements the 'landingpad' instruction. It's used to indicate that a basic block is a landing pad. There are several restrictions on its use (see LangRef.html for more detail). These restrictions allow the exception handling code to gather the information it needs in a much more sane way. This patch has the definition, implementation, C interface, parsing, and bitcode support in it. llvm-svn: 137501
-
- Aug 02, 2011
-
-
Eli Friedman authored
llvm-svn: 136723
-
- Jul 31, 2011
-
-
Bill Wendling authored
This adds the 'resume' instruction class, IR parsing, and bitcode reading and writing. The 'resume' instruction resumes propagation of an existing (in-flight) exception whose unwinding was interrupted with a 'landingpad' instruction (to be added later). llvm-svn: 136589
-
- Jul 30, 2011
-
-
Bill Wendling authored
r136339, r136341, r136369, r136387, r136392, r136396, r136429, r136430, r136444, r136445, r136446, r136253 pending review. llvm-svn: 136556
-
- Jul 27, 2011
-
-
Bill Wendling authored
This adds the new instructions 'landingpad' and 'resume'. llvm-svn: 136253
-
Eli Friedman authored
llvm-svn: 136205
-
- Jul 25, 2011
-
-
Nick Lewycky authored
llvm-svn: 135973
-
- Jul 21, 2011
-
-
Jay Foad authored
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef. llvm-svn: 135673
-
Chris Lattner authored
to for it to be an an anon namespace and be in a header. Eliminate some extraenous uses of tie. llvm-svn: 135669
-
- Jul 19, 2011
-
-
Jay Foad authored
llvm-svn: 135477
-
- Jul 18, 2011
-
-
Chris Lattner authored
llvm-svn: 135375
-
- May 21, 2011
-
-
Eli Friedman authored
consistently. llvm-svn: 131803
-
- Apr 15, 2011
-
-
Chris Lattner authored
Luis Felipe Strano Moraes! llvm-svn: 129558
-
- Jan 21, 2011
-
-
Nick Lewycky authored
instructions. llvm-svn: 123973
-
- Jan 16, 2011
-
-
Chris Lattner authored
llvm-svn: 123573
-
- Nov 30, 2010
-
-
Dale Johannesen authored
there should be a better way to do this. PR 8679. llvm-svn: 120457
-
- Oct 19, 2010
-
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
- Oct 08, 2010
-
-
Owen Anderson authored
llvm-svn: 115996
-
- Aug 18, 2010
-
-
Chris Lattner authored
llvm-svn: 111344
-
- Aug 13, 2010
-
-
Chris Lattner authored
before it rewrites the code, we need to use that in the post-rewrite pass. llvm-svn: 110962
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 29, 2010
-
-
Gabor Greif authored
llvm-svn: 109687
-
- Jul 22, 2010
-
-
Owen Anderson authored
llvm-svn: 109045
-
- Apr 26, 2010
-
-
Chris Lattner authored
llvm-svn: 102358
-
- Apr 09, 2010
-
-
Chris Lattner authored
forced constant is changed to a constant, we would end up adding the instruction to the wrong worklist, preventing it from being properly revisited. This fixes rdar://7832370 llvm-svn: 100837
-
- Apr 06, 2010
-
-
Chris Lattner authored
undefs in branches/switches, we have two cases: a branch on a literal undef or a branch on a symbolic value which is undef. If we have a literal undef, the code was correct: forcing it to a constant is the right thing to do. If we have a branch on a symbolic value that is undef, we should force the symbolic value to a constant, which then makes the successor block live. Forcing the condition of the branch to being a constant isn't safe if later paths become live and the value becomes overdefined. This is the case that 'forcedconstant' is designed to handle, so just use it. This fixes rdar://7765019 but there is no good testcase for this, the one I have is too insane to be useful in the future. llvm-svn: 100478
-
- Apr 01, 2010
-
-
Gabor Greif authored
is necessary. Inherits from new templated baseclass CallSiteBase<> which is highly customizable. Base CallSite on it too, in a configuration that allows full mutation. Adapt some call sites in analyses to employ ImmutableCallSite. llvm-svn: 100100
-
- Mar 26, 2010
-
-
Gabor Greif authored
llvm-svn: 99564
-
- Mar 24, 2010
-
-
Gabor Greif authored
I have audited all getOperandNo calls now, fixing hidden assumptions. CallSite related uglyness will be eliminated successively. Note this patch has a long and griveous history, for all the back-and-forths have a look at CallSite.h's log. llvm-svn: 99399
-