LLVM  8.0.1
Classes | Namespaces
Use.h File Reference

This defines the Use class. More...

#include "llvm-c/Types.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/Compiler.h"
Include dependency graph for Use.h:

Go to the source code of this file.

Classes

struct  llvm::simplify_type< From >
 
class  llvm::Use
 A Use represents the edge between a Value definition and its users. More...
 
struct  llvm::Use::UserRefPointerTraits
 Pointer traits for the UserRef PointerIntPair. More...
 
struct  llvm::Use::PrevPointerTraits
 Pointer traits for the Prev PointerIntPair. More...
 
struct  llvm::simplify_type< Use >
 Allow clients to treat uses just like values when using casting operators. More...
 
struct  llvm::simplify_type< const Use >
 

Namespaces

 llvm
 This class represents lattice values for constants.
 

Detailed Description

This defines the Use class.

The Use class represents the operand of an instruction or some other User instance which refers to a Value. The Use class keeps the "use list" of the referenced value up to date.

Pointer tagging is used to efficiently find the User corresponding to a Use without having to store a User pointer in every Use. A User is preceded in memory by all the Uses corresponding to its operands, and the low bits of one of the fields (Prev) of the Use class are used to encode offsets to be able to find that User given a pointer to any Use. For details, see:

http://www.llvm.org/docs/ProgrammersManual.html#UserLayout

Definition in file Use.h.