Lines Matching defs:adj

604 ///   struct { ptrdiff_t ptr; ptrdiff_t adj; } memptr;
608 /// - the this-adjustment is (memptr.adj)
612 /// - method pointers are virtual if (memptr.adj & 1) is nonzero
613 /// - the this-adjustment is (memptr.adj >> 1)
615 /// ARM uses 'adj' for the virtual flag because Thumb functions
640 // Extract memptr.adj, which is in the second field.
641 llvm::Value *RawAdj = Builder.CreateExtractValue(MemFnPtr, 1, "memptr.adj");
646 Adj = Builder.CreateAShr(Adj, ptrdiff_1, "memptr.adj.shifted");
948 llvm::Value *Adj = Builder.CreateExtractValue(src, 1, "memptr.adj");
976 llvm::Constant *adj = getMemberPointerAdjustment(E);
977 if (!adj) return src;
989 dst = Builder.CreateNSWSub(src, adj, "adj");
991 dst = Builder.CreateNSWAdd(src, adj, "adj");
1001 uint64_t offset = cast<llvm::ConstantInt>(adj)->getZExtValue();
1003 adj = llvm::ConstantInt::get(adj->getType(), offset);
1006 llvm::Value *srcAdj = Builder.CreateExtractValue(src, 1, "src.adj");
1009 dstAdj = Builder.CreateNSWSub(srcAdj, adj, "adj");
1011 dstAdj = Builder.CreateNSWAdd(srcAdj, adj, "adj");
1061 llvm::Constant *adj = getMemberPointerAdjustment(E);
1062 if (!adj) return src;
1076 return llvm::ConstantExpr::getNSWSub(src, adj);
1078 return llvm::ConstantExpr::getNSWAdd(src, adj);
1083 uint64_t offset = cast<llvm::ConstantInt>(adj)->getZExtValue();
1085 adj = llvm::ConstantInt::get(adj->getType(), offset);
1091 dstAdj = llvm::ConstantExpr::getNSWSub(srcAdj, adj);
1093 dstAdj = llvm::ConstantExpr::getNSWAdd(srcAdj, adj);
1149 // This ABI specifies that adj contains twice the this
1151 // least significant bit of adj then makes exactly the same
1176 // Don't set the LSB of adj to 1 if pointer authentication for member
1264 // (L == R) <==> (L.ptr == R.ptr && (L.ptr == 0 || L.adj == R.adj))
1267 // (L.adj == R.adj ||
1268 // (L.ptr == 0 && ((L.adj|R.adj) & 1) == 0)))
1285 // This condition tests whether L.adj == R.adj. If this isn't
1287 llvm::Value *LAdj = Builder.CreateExtractValue(L, 1, "lhs.memptr.adj");
1288 llvm::Value *RAdj = Builder.CreateExtractValue(R, 1, "rhs.memptr.adj");
1289 llvm::Value *AdjEq = Builder.CreateICmp(Eq, LAdj, RAdj, "cmp.adj");
1296 // Compute (l.adj | r.adj) & 1 and test it against zero.
1297 llvm::Value *OrAdj = Builder.CreateOr(LAdj, RAdj, "or.adj");
1300 "cmp.or.adj");
1331 // On ARM, a member function pointer is also non-null if the low bit of 'adj'
1335 llvm::Value *Adj = Builder.CreateExtractValue(MemPtr, 1, "memptr.adj");