aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineSSAUpdater.cpp
AgeCommit message (Collapse)AuthorFilesLines
2012-06-20Fix two rather subtle internal vs. external linker issues.Chandler Carruth1-25/+20
I'll admit I'm not entirely satisfied with this change, but it seemed the cleanest option. Other suggestions quite welcome The issue is that the traits specializations have static methods which return the typedef'ed PHI_iterator type. In both the IR and MI layers this is typedef'ed to a custom iterator class defined in an anonymous namespace giving the types and the functions returning them internal linkage. However, because the traits specialization is defined in the 'llvm' namespace (where it has to be, specialized template lives there), and is in turn used in the templated implementation of the SSAUpdater. This led to the linkage conflict that Clang now warns about. The simplest solution to me was just to define the PHI_iterator as a nested class inside the trait specialization. That way it still doesn't get scoped widely, it can't be accidentally reused somewhere, etc. This is a little gross just because nested class definitions are a little gross, but the alternatives seem more ad-hoc. llvm-svn: 158799
2012-01-20More dead code removal (using -Wunreachable-code)David Blaikie1-1/+0
llvm-svn: 148578
2011-12-06Mix some minor misuse of MachineBasicBlock iterator.Evan Cheng1-3/+3
llvm-svn: 145903
2010-05-10Fix PR7096. When a block containing multiple defs is tail duplicated, theBob Wilson1-1/+1
SSAUpdater for the value from the first def may see uses of undefined values, because the later defs will not have been updated yet. llvm-svn: 103407
2010-05-04Combine the implementations of the core part of the SSAUpdater andBob Wilson1-437/+109
MachineSSAUpdater to avoid duplicating all the code. llvm-svn: 103060
2010-04-26Update MachineSSAUpdater with the same changes I made for the IR-levelBob Wilson1-122/+428
SSAUpdater. I'm going to try to refactor this to share most of the code between them. llvm-svn: 102353
2010-04-02stop using DebugLoc::getUnknownLoc()Chris Lattner1-1/+1
llvm-svn: 100215
2010-02-10fix missing #includes.Chris Lattner1-0/+1
llvm-svn: 95745
2010-02-09move target-independent opcodes out of TargetInstrInfoChris Lattner1-8/+8
into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
2010-01-05Change errs() to dbgs().David Greene1-2/+2
llvm-svn: 92548
2009-12-07Watch out for duplicated PHI instructions.Evan Cheng1-3/+37
llvm-svn: 90816
2009-12-07Pre-regalloc tale duplication. Work in progress.Evan Cheng1-1/+11
llvm-svn: 90759
2009-12-07If BB is empty, insert PHI before end() instead of front().Evan Cheng1-3/+6
llvm-svn: 90744
2009-12-04Don't try to be cute with undef optimization here. Let ProcessImplicitDefs ↵Evan Cheng1-27/+17
handle it. llvm-svn: 90566
2009-12-04- If the reaching definition is an undef and the use is a PHI, add the ↵Evan Cheng1-11/+15
implicit_def to the end of the source block. - When reaching value is replaced with another, update the cache as well. llvm-svn: 90501
2009-12-03Handle undef values properly.Evan Cheng1-15/+38
llvm-svn: 90489
2009-12-03Fill out codegen SSA updater. It's not yet tested.Evan Cheng1-8/+229
llvm-svn: 90395
2009-12-02Skeleton for MachineInstr level SSA updater.Evan Cheng1-0/+108
llvm-svn: 90353