|
reference, declaration → definition
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();