Lines Matching defs:Sym
44 ExecutorAddr getJITSymbolPtrForSymbol(Symbol &Sym, const Triple &TT) {
50 if (hasTargetFlags(Sym, aarch32::ThumbSymbol)) {
52 assert(Sym.isCallable() && "Only callable symbols can have thumb flag");
53 assert((Sym.getAddress().getValue() & 0x01) == 0 && "LSB is clear");
54 return Sym.getAddress() + 0x01;
56 return Sym.getAddress();
58 return Sym.getAddress();
62 JITSymbolFlags getJITSymbolFlagsForSymbol(Symbol &Sym) {
65 if (Sym.getLinkage() == Linkage::Weak)
68 if (Sym.getScope() == Scope::Default)
71 if (Sym.isCallable())
97 auto AddSymbol = [&](Symbol *Sym) {
99 if (Sym->getScope() == Scope::Local)
101 assert(Sym->hasName() && "Anonymous non-local symbol?");
103 LGI.SymbolFlags[ES.intern(Sym->getName())] =
104 getJITSymbolFlagsForSymbol(*Sym);
107 for (auto *Sym : G.defined_symbols())
108 AddSymbol(Sym);
109 for (auto *Sym : G.absolute_symbols())
110 AddSymbol(Sym);
131 for (auto *Sym : G->defined_symbols())
132 if (Sym->getName() == *Name) {
133 assert(Sym->getLinkage() == Linkage::Weak &&
135 G->makeExternal(*Sym);
240 for (auto *Sym : G.defined_symbols())
241 if (Sym->hasName() && Sym->getScope() != Scope::Local) {
242 auto InternedName = ES.intern(Sym->getName());
243 auto Ptr = getJITSymbolPtrForSymbol(*Sym, G.getTargetTriple());
244 auto Flags = getJITSymbolFlagsForSymbol(*Sym);
253 for (auto *Sym : G.absolute_symbols())
254 if (Sym->hasName() && Sym->getScope() != Scope::Local) {
255 auto InternedName = ES.intern(Sym->getName());
256 auto Ptr = getJITSymbolPtrForSymbol(*Sym, G.getTargetTriple());
257 auto Flags = getJITSymbolFlagsForSymbol(*Sym);
421 SymbolStringPtr &getInternedName(Symbol &Sym) {
422 auto I = NameCache.find(&Sym);
426 return NameCache.insert(std::make_pair(&Sym, ES.intern(Sym.getName())))
467 auto ProcessSymbol = [&](Symbol *Sym) {
468 if (Sym->hasName() && Sym->getLinkage() == Linkage::Weak &&
469 Sym->getScope() != Scope::Local) {
470 auto Name = ES.intern(Sym->getName());
471 if (!MR->getSymbols().count(ES.intern(Sym->getName()))) {
473 getJITSymbolFlagsForSymbol(*Sym) | JITSymbolFlags::Weak;
474 NameToSym.push_back(std::make_pair(std::move(Name), Sym));
479 for (auto *Sym : G.defined_symbols())
480 ProcessSymbol(Sym);
481 for (auto *Sym : G.absolute_symbols())
482 ProcessSymbol(Sym);
505 for (auto *Sym : G.defined_symbols())
506 if (Sym->hasName() && MR->getSymbols().count(ES.intern(Sym->getName())))
507 Sym->setLive(true);
520 for (auto *Sym : G.defined_symbols()) {
523 if (Sym->getScope() == Scope::Local)
525 assert(Sym->hasName() &&
528 auto &BDeps = BlockDeps[Sym->getBlock()];
534 SymbolDependenceGroup &SDG = DepGroupForBlock[&Sym->getBlock()];
535 SDG.Symbols.insert(ES.intern(Sym->getName()));
537 if (!BlockDepsProcessed.count(&Sym->getBlock())) {
538 BlockDepsProcessed.insert(&Sym->getBlock());
560 for (auto *Sym : DepSyms) {
561 if (Sym->getScope() == Scope::Local) {
562 auto &BDeps = BlockDeps[Sym->getBlock()];
572 auto SymName = ES.intern(Sym->getName());
573 if (Sym->isExternal()) {