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

References

include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/Analysis/VectorUtils.h
  388   InterleaveGroup(InstTy *Instr, int32_t Stride, Align Alignment)
  407   bool insertMember(InstTy *Instr, int32_t Index, Align NewAlign) {
  447   InstTy *getMember(uint32_t Index) const {
  458   uint32_t getIndex(const InstTy *Instr) const {
  467   InstTy *getInsertPos() const { return InsertPos; }
  468   void setInsertPos(InstTy *Inst) { InsertPos = Inst; }
  476   void addMetadata(InstTy *NewInst) const;
  499   DenseMap<int32_t, InstTy *> Members;
  514   InstTy *InsertPos;
include/llvm/Support/Casting.h
   58     return To::classof(&Val);
   92     return isa_impl<To, From>::doit(*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,
  172   using ret_type = To *;       // Pointer arg case, return Ty*
  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;
  218   static typename cast_retty<To, From>::ret_type doit(From &Val) {
  219     return cast_convert_val<To, SimpleFrom,
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  248                                typename cast_retty<X, const Y>::ret_type>::type
  252       X, const Y, typename simplify_type<const Y>::SimpleType>::doit(Val);
  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*,
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  309   return cast<X>(Val);
  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;
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
lib/Transforms/Vectorize/LoopVectorizationPlanner.h
   40   VPInstruction *createInstruction(unsigned Opcode,
   42     VPInstruction *Instr = new VPInstruction(Opcode, Operands);
   42     VPInstruction *Instr = new VPInstruction(Opcode, Operands);
   48   VPInstruction *createInstruction(unsigned Opcode,
  110   VPInstruction *insert(VPInstruction *I) const {
  110   VPInstruction *insert(VPInstruction *I) const {
  119     VPInstruction *NewVPInst = createInstruction(Opcode, Operands);
  130     return createInstruction(VPInstruction::Not, {Operand});
lib/Transforms/Vectorize/LoopVectorize.cpp
 6692     BlockMask = Builder.createNaryOp(VPInstruction::ICmpULE, {IV, BTC});
lib/Transforms/Vectorize/VPlan.cpp
   51   if (const VPInstruction *Instr = dyn_cast<VPInstruction>(&V))
   51   if (const VPInstruction *Instr = dyn_cast<VPInstruction>(&V))
  305   case VPInstruction::Not: {
  311   case VPInstruction::ICmpULE: {
  348   case VPInstruction::Not:
  351   case VPInstruction::ICmpULE:
  354   case VPInstruction::SLPLoad:
  357   case VPInstruction::SLPStore:
  581     if (const VPInstruction *PredI = dyn_cast<VPInstruction>(Pred)) {
  581     if (const VPInstruction *PredI = dyn_cast<VPInstruction>(Pred)) {
  596     if (const VPInstruction *CBI = dyn_cast<VPInstruction>(CBV)) {
  596     if (const VPInstruction *CBI = dyn_cast<VPInstruction>(CBV)) {
  736       auto *VPInst = cast<VPInstruction>(&VPI);
  736       auto *VPInst = cast<VPInstruction>(&VPI);
  744         Old2New[IG] = new InterleaveGroup<VPInstruction>(
lib/Transforms/Vectorize/VPlan.h
  673   VPInstruction *clone() const {
  675     return new VPInstruction(Opcode, Operands);
 1554   DenseMap<VPInstruction *, InterleaveGroup<VPInstruction> *>
 1554   DenseMap<VPInstruction *, InterleaveGroup<VPInstruction> *>
 1560                              InterleaveGroup<VPInstruction> *>;
 1575     SmallPtrSet<InterleaveGroup<VPInstruction> *, 4> DelSet;
 1586   InterleaveGroup<VPInstruction> *
 1587   getInterleaveGroup(VPInstruction *Instr) const {
 1638       typename std::pair<VPInstruction *, SmallVector<VPValue *, 4>>;
 1653   void addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New);
 1656   VPInstruction *markFailed();
 1682   VPInstruction *buildGraph(ArrayRef<VPValue *> Operands);
lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp
   98     auto *VPPhi = cast<VPInstruction>(VPVal);
   98     auto *VPPhi = cast<VPInstruction>(VPVal);
  213     VPInstruction *NewVPInst;
  218       NewVPInst = cast<VPInstruction>(VPIRBuilder.createNaryOp(
  230       NewVPInst = cast<VPInstruction>(
lib/Transforms/Vectorize/VPlanHCFGTransforms.cpp
   49       VPInstruction *VPInst = cast<VPInstruction>(Ingredient);
   49       VPInstruction *VPInst = cast<VPInstruction>(Ingredient);
lib/Transforms/Vectorize/VPlanSLP.cpp
   50 VPInstruction *VPlanSlp::markFailed() {
   57 void VPlanSlp::addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New) {
   59         return cast<VPInstruction>(V)->getUnderlyingInstr();
   63       Type *T = cast<VPInstruction>(V)->getUnderlyingInstr()->getType();
   79         return Op && isa<VPInstruction>(Op) &&
   80                cast<VPInstruction>(Op)->getUnderlyingInstr();
   91       cast<VPInstruction>(Operands[0])->getUnderlyingInstr();
   95         const Instruction *I = cast<VPInstruction>(Op)->getUnderlyingInstr();
  105         return cast<VPInstruction>(Op)->getParent() != &this->BB;
  123     VPBasicBlock *Parent = cast<VPInstruction>(Operands[0])->getParent();
  125       auto *VPI = cast<VPInstruction>(&I);
  125       auto *VPI = cast<VPInstruction>(&I);
  140           return cast<LoadInst>(cast<VPInstruction>(Op)->getUnderlyingInstr())
  150           return cast<StoreInst>(cast<VPInstruction>(Op)->getUnderlyingInstr())
  172       cast<VPInstruction>(Values[0])->getOpcode());
  178   auto *VPI = cast<VPInstruction>(Values[0]);
  178   auto *VPI = cast<VPInstruction>(Values[0]);
  197   unsigned Opcode = cast<VPInstruction>(Values[0])->getOpcode();
  199         return cast<VPInstruction>(V)->getOpcode() != Opcode;
  207 static bool areConsecutiveOrMatch(VPInstruction *A, VPInstruction *B,
  207 static bool areConsecutiveOrMatch(VPInstruction *A, VPInstruction *B,
  225   if (!isa<VPInstruction>(V1) || !isa<VPInstruction>(V2))
  225   if (!isa<VPInstruction>(V1) || !isa<VPInstruction>(V2))
  229     return (unsigned)areConsecutiveOrMatch(cast<VPInstruction>(V1),
  230                                            cast<VPInstruction>(V2), IAI);
  252     auto *LastI = cast<VPInstruction>(Last);
  252     auto *LastI = cast<VPInstruction>(Last);
  253     auto *CandidateI = cast<VPInstruction>(Candidate);
  253     auto *CandidateI = cast<VPInstruction>(Candidate);
  309     if (cast<VPInstruction>(Operands.second[0])->getOpcode() ==
  350     if (auto *VPInstr = cast_or_null<VPInstruction>(Op))
  350     if (auto *VPInstr = cast_or_null<VPInstruction>(Op))
  360 VPInstruction *VPlanSlp::buildGraph(ArrayRef<VPValue *> Values) {
  412         VPInstruction *Op = new VPInstruction(0, {});
  412         VPInstruction *Op = new VPInstruction(0, {});
  426         VPInstruction *NewOp = buildGraph(Ops.second);
  440         CombinedOperands.push_back(cast<VPInstruction>(V)->getOperand(0));
  449     Opcode = VPInstruction::SLPLoad;
  452     Opcode = VPInstruction::SLPStore;
  463   auto *VPI = new VPInstruction(Opcode, CombinedOperands);
  463   auto *VPI = new VPInstruction(Opcode, CombinedOperands);
  464   VPI->setUnderlyingInstr(cast<VPInstruction>(Values[0])->getUnderlyingInstr());
unittests/Transforms/Vectorize/VPlanHCFGTest.cpp
   55   VPInstruction *Phi = dyn_cast<VPInstruction>(&*Iter++);
   55   VPInstruction *Phi = dyn_cast<VPInstruction>(&*Iter++);
   58   VPInstruction *Idx = dyn_cast<VPInstruction>(&*Iter++);
   58   VPInstruction *Idx = dyn_cast<VPInstruction>(&*Iter++);
   63   VPInstruction *Load = dyn_cast<VPInstruction>(&*Iter++);
   63   VPInstruction *Load = dyn_cast<VPInstruction>(&*Iter++);
   68   VPInstruction *Add = dyn_cast<VPInstruction>(&*Iter++);
   68   VPInstruction *Add = dyn_cast<VPInstruction>(&*Iter++);
   73   VPInstruction *Store = dyn_cast<VPInstruction>(&*Iter++);
   73   VPInstruction *Store = dyn_cast<VPInstruction>(&*Iter++);
   79   VPInstruction *IndvarAdd = dyn_cast<VPInstruction>(&*Iter++);
   79   VPInstruction *IndvarAdd = dyn_cast<VPInstruction>(&*Iter++);
   84   VPInstruction *ICmp = dyn_cast<VPInstruction>(&*Iter++);
   84   VPInstruction *ICmp = dyn_cast<VPInstruction>(&*Iter++);
unittests/Transforms/Vectorize/VPlanPredicatorTest.cpp
   87   VPInstruction *InnerAnd =
   88       cast<VPInstruction>(InnerIf->getEntryBasicBlock()->begin());
  180   VPInstruction *And =
  181       cast<VPInstruction>(InnerIfTSucc->getEntryBasicBlock()->begin());
  182   VPInstruction *Not =
  183       cast<VPInstruction>(InnerIfFSucc->getEntryBasicBlock()->begin());
  184   VPInstruction *NotAnd = cast<VPInstruction>(
  184   VPInstruction *NotAnd = cast<VPInstruction>(
  186   VPInstruction *Or =
  187       cast<VPInstruction>(TSuccSucc->getEntryBasicBlock()->begin());
  217   VPInstruction *OrOp0Inst = cast<VPInstruction>(Or->getOperand(0));
  217   VPInstruction *OrOp0Inst = cast<VPInstruction>(Or->getOperand(0));
  218   VPInstruction *OrOp1Inst = cast<VPInstruction>(Or->getOperand(1));
  218   VPInstruction *OrOp1Inst = cast<VPInstruction>(Or->getOperand(1));
unittests/Transforms/Vectorize/VPlanSlpTest.cpp
  104   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  104   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  105   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  105   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  109   VPInstruction *CombinedStore = Slp.buildGraph(StoreRoot);
  113   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  113   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  116   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  116   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  117   auto *CombinedLoadB = cast<VPInstruction>(CombinedAdd->getOperand(1));
  117   auto *CombinedLoadB = cast<VPInstruction>(CombinedAdd->getOperand(1));
  171   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  171   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  172   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  172   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  178   VPInstruction *CombinedStore = Slp.buildGraph(StoreRoot);
  182   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  182   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  185   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  185   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  186   auto *CombinedLoadB = cast<VPInstruction>(CombinedAdd->getOperand(1));
  186   auto *CombinedLoadB = cast<VPInstruction>(CombinedAdd->getOperand(1));
  190   VPInstruction *GetA = cast<VPInstruction>(&*std::next(Body->begin(), 1));
  190   VPInstruction *GetA = cast<VPInstruction>(&*std::next(Body->begin(), 1));
  191   VPInstruction *GetB = cast<VPInstruction>(&*std::next(Body->begin(), 3));
  191   VPInstruction *GetB = cast<VPInstruction>(&*std::next(Body->begin(), 3));
  238   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 8));
  238   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 8));
  239   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 10));
  239   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 10));
  243   VPInstruction *CombinedStore = Slp.buildGraph(StoreRoot);
  247   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  247   auto *CombinedAdd = cast<VPInstruction>(CombinedStore->getOperand(0));
  250   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  250   auto *CombinedLoadA = cast<VPInstruction>(CombinedAdd->getOperand(0));
  297   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 5));
  297   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 5));
  298   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 10));
  298   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 10));
  306 static void checkReorderExample(VPInstruction *Store1, VPInstruction *Store2,
  306 static void checkReorderExample(VPInstruction *Store1, VPInstruction *Store2,
  311   VPInstruction *CombinedStore = Slp.buildGraph(StoreRoot);
  316   VPInstruction *CombinedAdd =
  317       cast<VPInstruction>(CombinedStore->getOperand(0));
  320   VPInstruction *CombinedMulAB =
  321       cast<VPInstruction>(CombinedAdd->getOperand(0));
  322   VPInstruction *CombinedMulCD =
  323       cast<VPInstruction>(CombinedAdd->getOperand(1));
  326   VPInstruction *CombinedLoadA =
  327       cast<VPInstruction>(CombinedMulAB->getOperand(0));
  329   VPInstruction *LoadvA0 = cast<VPInstruction>(&*std::next(Body->begin(), 2));
  329   VPInstruction *LoadvA0 = cast<VPInstruction>(&*std::next(Body->begin(), 2));
  330   VPInstruction *LoadvA1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  330   VPInstruction *LoadvA1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  334   VPInstruction *CombinedLoadB =
  335       cast<VPInstruction>(CombinedMulAB->getOperand(1));
  337   VPInstruction *LoadvB0 = cast<VPInstruction>(&*std::next(Body->begin(), 4));
  337   VPInstruction *LoadvB0 = cast<VPInstruction>(&*std::next(Body->begin(), 4));
  338   VPInstruction *LoadvB1 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  338   VPInstruction *LoadvB1 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  344   VPInstruction *CombinedLoadC =
  345       cast<VPInstruction>(CombinedMulCD->getOperand(0));
  347   VPInstruction *LoadvC0 = cast<VPInstruction>(&*std::next(Body->begin(), 7));
  347   VPInstruction *LoadvC0 = cast<VPInstruction>(&*std::next(Body->begin(), 7));
  348   VPInstruction *LoadvC1 = cast<VPInstruction>(&*std::next(Body->begin(), 17));
  348   VPInstruction *LoadvC1 = cast<VPInstruction>(&*std::next(Body->begin(), 17));
  352   VPInstruction *CombinedLoadD =
  353       cast<VPInstruction>(CombinedMulCD->getOperand(1));
  355   VPInstruction *LoadvD0 = cast<VPInstruction>(&*std::next(Body->begin(), 9));
  355   VPInstruction *LoadvD0 = cast<VPInstruction>(&*std::next(Body->begin(), 9));
  356   VPInstruction *LoadvD1 = cast<VPInstruction>(&*std::next(Body->begin(), 19));
  356   VPInstruction *LoadvD1 = cast<VPInstruction>(&*std::next(Body->begin(), 19));
  425   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  425   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  426   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  426   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  497   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  497   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  498   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  498   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  569   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  569   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  570   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  570   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  645   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  645   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 24));
  646   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  646   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 26));
  707   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(BB2->begin(), 3));
  707   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(BB2->begin(), 3));
  708   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(BB2->begin(), 5));
  708   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(BB2->begin(), 5));
  770   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(BB2->begin(), 1));
  770   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(BB2->begin(), 1));
  771   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(BB2->begin(), 3));
  771   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(BB2->begin(), 3));
  829   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  829   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  830   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  830   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  888   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  888   VPInstruction *Store1 = cast<VPInstruction>(&*std::next(Body->begin(), 12));
  889   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
  889   VPInstruction *Store2 = cast<VPInstruction>(&*std::next(Body->begin(), 14));
unittests/Transforms/Vectorize/VPlanTest.cpp
   28   VPInstruction *I1 = new VPInstruction(0, {});
   28   VPInstruction *I1 = new VPInstruction(0, {});
   29   VPInstruction *I2 = new VPInstruction(1, {});
   29   VPInstruction *I2 = new VPInstruction(1, {});
   30   VPInstruction *I3 = new VPInstruction(2, {});
   30   VPInstruction *I3 = new VPInstruction(2, {});
   43   VPInstruction *I1 = new VPInstruction(0, {});
   43   VPInstruction *I1 = new VPInstruction(0, {});
   44   VPInstruction *I2 = new VPInstruction(1, {});
   44   VPInstruction *I2 = new VPInstruction(1, {});
   45   VPInstruction *I3 = new VPInstruction(2, {});
   45   VPInstruction *I3 = new VPInstruction(2, {});
   63   VPInstruction *I1 = new VPInstruction(0, {});
   63   VPInstruction *I1 = new VPInstruction(0, {});
   64   VPInstruction *I2 = new VPInstruction(1, {});
   64   VPInstruction *I2 = new VPInstruction(1, {});
   65   VPInstruction *I3 = new VPInstruction(2, {});
   65   VPInstruction *I3 = new VPInstruction(2, {});
   76   VPInstruction *I4 = new VPInstruction(4, {});
   76   VPInstruction *I4 = new VPInstruction(4, {});
   77   VPInstruction *I5 = new VPInstruction(5, {});
   77   VPInstruction *I5 = new VPInstruction(5, {});
usr/include/c++/7.4.0/type_traits
 1983     { typedef _Up     type; };
utils/unittest/googletest/include/gtest/gtest-printers.h
  407                     T* p, ::std::ostream* os) {
  416     if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
utils/unittest/googletest/include/gtest/gtest.h
 1475       T* rhs) {