aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/PseudoSourceValue.cpp
AgeCommit message (Collapse)AuthorFilesLines
2014-08-16Make isAliased property for fixed-offset stack objects adjustableHal Finkel1-6/+2
We used to assume that any fixed-offset stack object was not aliased. This meant that no IR value could point to the memory contained in such an object. This is a reasonable default, but is not a universally-correct target-independent fact. For example, on PowerPC (both Darwin and non-Darwin), some byval arguments are allocated at fixed offsets by the ABI. These, however, certainly can be pointed to by IR values. This change moves the 'isAliased' logic out of FixedStackPseudoSourceValue and into MFI, and allows the isAliased property to be overridden for fixed-offset objects. This will be used by an upcoming commit to the PowerPC backend to fix PR20280. No functionality change intended (the behavior of FixedStackPseudoSourceValue::isAliased has been made more conservative for callers that don't pass an MFI object, but I don't see any in-tree callers that do that). llvm-svn: 215794
2014-04-15Break PseudoSourceValue out of the Value hierarchy. It is now the root of ↵Nick Lewycky1-7/+3
its own tree containing FixedStackPseudoSourceValue (which you can use isa/dyn_cast on) and MipsCallEntry (which you can't). Anything that needs to use either a PseudoSourceValue* and Value* is strongly encouraged to use a MachinePointerInfo instead. llvm-svn: 206255
2013-01-02Move all of the header files which are involved in modelling the LLVM IRChandler Carruth1-2/+2
into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. llvm-svn: 171366
2012-12-03Use the new script to sort the includes of every file under lib.Chandler Carruth1-2/+2
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] llvm-svn: 169131
2012-01-20More dead code removal (using -Wunreachable-code)David Blaikie1-2/+0
llvm-svn: 148578
2010-11-29Merge System into Support.Michael J. Spencer1-1/+1
llvm-svn: 120298
2010-03-04Fix memcheck-found leaks: one false positive from using new[], and one trueJeffrey Yasskin1-9/+28
positive where pointers would be leaked on llvm_shutdown. llvm-svn: 97759
2009-11-12Do some cleanups suggested by Chris.David Greene1-0/+4
llvm-svn: 87034
2009-11-12Make FixedStackPseudoSourceValue a first-class PseudoSourceValue byDavid Greene1-23/+2
making it visible to clients and adding LLVM-style cast capability. This will be used by AsmPrinter to determine when to emit spill comments for an instruction. llvm-svn: 87019
2009-11-01Add PseudoSourceValue::mayAlias. It returns true if the object can ever ↵Evan Cheng1-0/+17
alias any LLVM IR value. llvm-svn: 85762
2009-10-27pseudosourcevalue is also still using getGlobalContext(), so it isn'tChris Lattner1-0/+1
thread safe either. llvm-svn: 85253
2009-10-25Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky1-1/+0
VISIBILITY_HIDDEN removal. llvm-svn: 85043
2009-10-25Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky1-2/+1
Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
2009-10-18Spill slots cannot alias.Evan Cheng1-4/+7
llvm-svn: 84432
2009-10-18-Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixedEvan Cheng1-0/+19
stack slots and giving them different PseudoSourceValue's did not fix the problem of post-alloc scheduling miscompiling llvm itself. - Apply Dan's conservative workaround by assuming any non fixed stack slots can alias other memory locations. This means a load from spill slot #1 cannot move above a store of spill slot #2. - Enable post-alloc scheduling for x86 at optimization leverl Default and above. llvm-svn: 84424
2009-10-17Revert 84315 for now. Re-thinking the patch.Evan Cheng1-11/+8
llvm-svn: 84321
2009-10-17Rename getFixedStack to getStackObject. The stack objects represented are notEvan Cheng1-8/+11
necessarily fixed. Only those will negative frame indices are "fixed." llvm-svn: 84315
2009-10-06Introduce and use convenience methods for getting pointer typesDuncan Sands1-1/+1
where the element is of a basic builtin type. For example, to get an i8* use getInt8PtrTy. llvm-svn: 83379
2009-09-23Give MachineMemOperand an operator<<, factoring out code fromDan Gohman1-7/+3
two different places for printing MachineMemOperands. Drop the virtual from Value::dump and instead give Value a protected virtual hook that can be overridden by subclasses to implement custom printing. This lets printing be more consistent, and simplifies printing of PseudoSourceValue values. llvm-svn: 82599
2009-08-13Push LLVMContexts through the IntegerType APIs.Owen Anderson1-1/+6
llvm-svn: 78948
2009-07-14llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin1-1/+1
This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
2009-07-11assert(0) -> LLVM_UNREACHABLE.Torok Edwin1-1/+2
Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
2009-03-23Now that errs() is properly non-buffered, there's no need toDan Gohman1-1/+1
explicitly flush it. llvm-svn: 67526
2008-12-03Have PseudoSourceValue override Value::dump, so that it worksDan Gohman1-0/+4
on PseudoSourceValue values. This also fixes a FIXME in lib/VMCode/AsmWriter.cpp. llvm-svn: 60507
2008-08-27Remove the std::ostream form of PseudoSourceValue's print,Dan Gohman1-3/+0
which isn't needed anymore. llvm-svn: 55419
2008-08-24simplify PseudoSourceValue printing a bit. Unnest all of ↵Chris Lattner1-44/+41
PseudoSourceValue.cpp from the llvm namespace. llvm-svn: 55293
2008-08-24Print PseudoSourceValue.Evan Cheng1-0/+7
llvm-svn: 55291
2008-07-25Enable rematerialization of constants using ↵Dan Gohman1-0/+20
AliasAnalysis::pointsToConstantMemory, and knowledge of PseudoSourceValues. This unfortunately isn't sufficient to allow constants to be rematerialized in PIC mode -- the extra indirection is a complication. llvm-svn: 54000
2008-07-14Fix edito in the PseudoSourceValue name list.Dan Gohman1-1/+1
llvm-svn: 53562
2008-07-11Include a frame index in the "fixed stack" pseudo source valueDan Gohman1-8/+29
instead of using the frame index for the SVOffset, which was inconsistent. llvm-svn: 53486
2008-03-25A quick nm audit turned up several fixed tables and objects that wereDan Gohman1-1/+1
marked read-write. Use const so that they can be allocated in a read-only segment. llvm-svn: 48800
2008-02-11From Chris' review: fix 80 column violationsDan Gohman1-5/+10
llvm-svn: 46961
2008-02-07Follow Chris' suggestion; change the PseudoSourceValue accessorsDan Gohman1-5/+5
to return pointers instead of references, since this is always what is needed. llvm-svn: 46857
2008-02-06Re-apply the memory operand changes, with a fix for the staticDan Gohman1-0/+41
initializer problem, a minor tweak to the way the DAGISelEmitter finds load/store nodes, and a renaming of the new PseudoSourceValue objects. llvm-svn: 46827
2008-01-31Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and ↵Evan Cheng1-33/+0
re-commit. llvm-svn: 46623
2008-01-30Add a new PseudoSourceValue class, which will be used to help trackDan Gohman1-0/+33
memory reference information in the backend. Most of this was written by Florian Brander, cleanup and updating to TOT by me. llvm-svn: 46556