reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/lld/include/lld/Core/Simple.h
  246 class SimpleUndefinedAtom : public UndefinedAtom {
tools/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
  997   class NormalizedAtom : public lld::UndefinedAtom {

Declarations

tools/lld/include/lld/Core/SymbolTable.h
   27 class UndefinedAtom;

References

include/llvm/Support/Casting.h
   58     return To::classof(&Val);
  106     return isa_impl<To, From>::doit(*Val);
  122     return isa_impl_wrap<To, SimpleFrom,
  132     return isa_impl_cl<To,FromTy>::doit(Val);
  142   return isa_impl_wrap<X, const Y,
  176   using ret_type = const To *; // Constant pointer arg case, return const Ty*
  198   using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
  204   using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
  210       To, From, typename simplify_type<From>::SimpleType>::ret_type;
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  256 inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  337 LLVM_NODISCARD inline typename cast_retty<X, Y>::ret_type dyn_cast(Y &Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
tools/lld/include/lld/Core/Atom.h
   88   OwningAtomPtr(T *atom) : atom(atom) { }
  110   T *const &get() const {
  114   T *&get() {
  118   T *release() {
  119     auto *v = atom;
  125   T *atom = nullptr;
tools/lld/include/lld/Core/File.h
  114     AtomRange(AtomVector<T> &v) : _v(v) {}
  115     AtomRange(const AtomVector<T> &v) : _v(const_cast<AtomVector<T> &>(v)) {}
  117     using ConstDerefFn = const T* (*)(const OwningAtomPtr<T>&);
  117     using ConstDerefFn = const T* (*)(const OwningAtomPtr<T>&);
  118     using DerefFn = T* (*)(OwningAtomPtr<T>&);
  118     using DerefFn = T* (*)(OwningAtomPtr<T>&);
  120     typedef llvm::mapped_iterator<typename AtomVector<T>::const_iterator,
  122     typedef llvm::mapped_iterator<typename AtomVector<T>::iterator,
  125     static const T* DerefConst(const OwningAtomPtr<T> &p) {
  125     static const T* DerefConst(const OwningAtomPtr<T> &p) {
  129     static T* Deref(OwningAtomPtr<T> &p) {
  129     static T* Deref(OwningAtomPtr<T> &p) {
  147     llvm::iterator_range<typename AtomVector<T>::iterator> owning_ptrs() {
  151     llvm::iterator_range<typename AtomVector<T>::iterator> owning_ptrs() const {
  163     const OwningAtomPtr<T> &operator[](size_t idx) const {
  167     OwningAtomPtr<T> &operator[](size_t idx) {
  172     AtomVector<T> &_v;
  181   virtual const AtomRange<UndefinedAtom> undefined() const = 0;
  225   static AtomVector<UndefinedAtom> _noUndefinedAtoms;
  257   const AtomRange<UndefinedAtom> undefined() const override {
tools/lld/include/lld/Core/Resolver.h
   38   bool doUndefinedAtom(OwningAtomPtr<UndefinedAtom> atom);
tools/lld/include/lld/Core/SharedLibraryFile.h
   38   const AtomRange<UndefinedAtom> undefined() const override {
   62   AtomVector<UndefinedAtom> _undefinedAtoms;
tools/lld/include/lld/Core/Simple.h
   53   void addAtom(UndefinedAtom &a) {
   66     } else if (auto *p = dyn_cast<UndefinedAtom>(&atom)) {
   88   const AtomRange<UndefinedAtom> undefined() const override {
  109   AtomVector<UndefinedAtom> _undefined;
  246 class SimpleUndefinedAtom : public UndefinedAtom {
  261   CanBeNull canBeNull() const override { return UndefinedAtom::canBeNullNever; }
tools/lld/include/lld/Core/SymbolTable.h
   40   bool add(const UndefinedAtom &);
   52   std::vector<const UndefinedAtom *> undefines();
tools/lld/include/lld/Core/UndefinedAtom.h
   57   static bool classof(const UndefinedAtom *) { return true; }
tools/lld/lib/Core/File.cpp
   17 File::AtomVector<UndefinedAtom> File::_noUndefinedAtoms;
tools/lld/lib/Core/Resolver.cpp
   59       if (!isa<UndefinedAtom>(atom) || _symbolTable.isCoalescedAway(atom)) {
  105 bool Resolver::doUndefinedAtom(OwningAtomPtr<UndefinedAtom> atom) {
  396   std::vector<const UndefinedAtom *> undefinedAtoms = _symbolTable.undefines();
  410   for (const UndefinedAtom *undef : undefinedAtoms) {
  412     if (undef->canBeNull() != UndefinedAtom::canBeNullNever)
tools/lld/lib/Core/SymbolTable.cpp
   30 bool SymbolTable::add(const UndefinedAtom &atom) { return addByName(atom); }
  181     const UndefinedAtom* existingUndef = cast<UndefinedAtom>(existing);
  181     const UndefinedAtom* existingUndef = cast<UndefinedAtom>(existing);
  182     const UndefinedAtom* newUndef = cast<UndefinedAtom>(&newAtom);
  182     const UndefinedAtom* newUndef = cast<UndefinedAtom>(&newAtom);
  278 std::vector<const UndefinedAtom *> SymbolTable::undefines() {
  279   std::vector<const UndefinedAtom *> ret;
  283     if (const auto *undef = dyn_cast<const UndefinedAtom>(atom))
  283     if (const auto *undef = dyn_cast<const UndefinedAtom>(atom))
tools/lld/lib/ReaderWriter/FileArchive.cpp
  105   const AtomRange<UndefinedAtom> undefined() const override {
tools/lld/lib/ReaderWriter/MachO/ArchHandler_arm.cpp
 1047   if (isa<UndefinedAtom>(&target))
 1080   bool targetIsUndef = isa<UndefinedAtom>(ref.target());
tools/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
  532   if (isa<UndefinedAtom>(&target))
tools/lld/lib/ReaderWriter/MachO/ExecutableAtoms.h
  127   const AtomRange<UndefinedAtom> undefined() const override {
tools/lld/lib/ReaderWriter/MachO/FlatNamespaceFile.h
   39   const AtomRange<UndefinedAtom> undefined() const override {
tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
 1116   for (const UndefinedAtom *atom : atomFile.undefined()) {
tools/lld/lib/ReaderWriter/MachO/SectCreateFile.h
   75   const AtomRange<UndefinedAtom> undefined() const override {
tools/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
  101     for (const lld::UndefinedAtom *undefAtom : file.undefined()) {
  210   using Ty = std::vector<OwningAtomPtr<T>>;
  434   static void enumeration(IO &io, lld::UndefinedAtom::CanBeNull &value) {
  435     io.enumCase(value, "never",       lld::UndefinedAtom::canBeNullNever);
  436     io.enumCase(value, "at-runtime",  lld::UndefinedAtom::canBeNullAtRuntime);
  437     io.enumCase(value, "at-buildtime",lld::UndefinedAtom::canBeNullAtBuildtime);
  518   static size_t size(IO &io, AtomList<T> &seq) { return seq._atoms.size(); }
  519   static T *&element(IO &io, AtomList<T> &seq, size_t index) {
  519   static T *&element(IO &io, AtomList<T> &seq, size_t index) {
  528   static size_t size(IO &io, File::AtomRange<T> &seq) { return seq.size(); }
  529   static T *&element(IO &io, File::AtomRange<T> &seq, size_t index) {
  529   static T *&element(IO &io, File::AtomRange<T> &seq, size_t index) {
  588     const AtomRange<lld::UndefinedAtom> undefined() const override {
  651     const AtomRange<lld::UndefinedAtom> undefined() const override {
  682     AtomList<lld::UndefinedAtom>         _undefinedAtoms;
  686     AtomRange<lld::UndefinedAtom>        _undefinedAtomsRef;
  997   class NormalizedAtom : public lld::UndefinedAtom {
 1002     NormalizedAtom(IO &io, const lld::UndefinedAtom *atom)
 1008     const lld::UndefinedAtom *denormalize(IO &io) {
 1040   static void mapping(IO &io, const lld::UndefinedAtom *&atom) {
 1042     MappingNormalizationHeap<NormalizedAtom, const lld::UndefinedAtom *> keys(
 1047                                   lld::UndefinedAtom::canBeNullNever);
 1052   static void mapping(IO &io, lld::UndefinedAtom *&atom) {
 1053     const lld::UndefinedAtom *atomPtr = atom;
 1054     MappingTraits<const lld::UndefinedAtom *>::mapping(io, atomPtr);
 1231   for (const lld::UndefinedAtom *a : file->undefined())
tools/lld/unittests/MachOTests/MachONormalizedFileToAtomsTests.cpp
   80   const lld::UndefinedAtom *atom4 = *file.undefined().begin();