| /freebsd/contrib/llvm-project/llvm/lib/Transforms/InstCombine/ |
| H A D | InstCombinePHI.cpp | 43 void InstCombinerImpl::PHIArgMergedDebugLoc(Instruction *Inst, PHINode &PN) { in PHIArgMergedDebugLoc() argument 44 auto *FirstInst = cast<Instruction>(PN.getIncomingValue(0)); in PHIArgMergedDebugLoc() 50 for (Value *V : drop_begin(PN.incoming_values())) { in PHIArgMergedDebugLoc() 59 bool InstCombinerImpl::foldDeadPhiWeb(PHINode &PN) { in foldDeadPhiWeb() argument 62 Stack.push_back(&PN); in foldDeadPhiWeb() 134 bool InstCombinerImpl::foldIntegerTypedPHI(PHINode &PN) { in foldIntegerTypedPHI() argument 135 if (!PN.getType()->isIntegerTy()) in foldIntegerTypedPHI() 137 if (!PN.hasOneUse()) in foldIntegerTypedPHI() 140 auto *IntToPtr = dyn_cast<IntToPtrInst>(PN.user_back()); in foldIntegerTypedPHI() 170 for (auto Incoming : zip(PN.blocks(), PN.incoming_values())) { in foldIntegerTypedPHI() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/ |
| H A D | LoopSimplify.cpp | 174 PHINode *PN = cast<PHINode>(I); in findPHIToPartitionLoops() local 176 if (Value *V = simplifyInstruction(PN, {DL, nullptr, DT, AC})) { in findPHIToPartitionLoops() 178 PN->replaceAllUsesWith(V); in findPHIToPartitionLoops() 179 PN->eraseFromParent(); in findPHIToPartitionLoops() 184 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in findPHIToPartitionLoops() 185 if (PN->getIncomingValue(i) == PN && in findPHIToPartitionLoops() 186 L->contains(PN->getIncomingBlock(i))) in findPHIToPartitionLoops() 188 return PN; in findPHIToPartitionLoops() 245 PHINode *PN = findPHIToPartitionLoops(L, DT, AC); in separateNestedLoop() local 246 if (!PN) return nullptr; // No known way to partition. in separateNestedLoop() [all …]
|
| H A D | LCSSA.cpp | 123 if (auto *PN = dyn_cast<PHINode>(User)) in formLCSSAForInstructionsImpl() local 124 UserBB = PN->getIncomingBlock(U); in formLCSSAForInstructionsImpl() 164 PHINode *PN = PHINode::Create(I->getType(), PredCache.size(ExitBB), in formLCSSAForInstructionsImpl() local 166 PN->insertBefore(ExitBB->begin()); in formLCSSAForInstructionsImpl() 168 InsertedPHIs->push_back(PN); in formLCSSAForInstructionsImpl() 170 PN->setDebugLoc(I->getDebugLoc()); in formLCSSAForInstructionsImpl() 178 PN->addIncoming(I, Pred); in formLCSSAForInstructionsImpl() 185 &PN->getOperandUse(PN->getOperandNumForIncomingValue( in formLCSSAForInstructionsImpl() 186 PN->getNumIncomingValues() - 1))); in formLCSSAForInstructionsImpl() 189 AddedPHIs.push_back(PN); in formLCSSAForInstructionsImpl() [all …]
|
| H A D | LoopVersioning.cpp | 132 PHINode *PN; in addPHINodes() local 139 for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) { in addPHINodes() 140 if (PN->getIncomingValue(0) == Inst) { in addPHINodes() 141 SE->forgetLcssaPhiWithNewPredecessor(VersionedLoop, PN); in addPHINodes() 146 if (!PN) { in addPHINodes() 147 PN = PHINode::Create(Inst->getType(), 2, Inst->getName() + ".lver"); in addPHINodes() 148 PN->insertBefore(PHIBlock->begin()); in addPHINodes() 154 U->replaceUsesOfWith(Inst, PN); in addPHINodes() 155 PN->addIncoming(Inst, VersionedLoop->getExitingBlock()); in addPHINodes() 160 for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) { in addPHINodes() [all …]
|
| H A D | LoopUnrollRuntime.cpp | 110 for (PHINode &PN : Succ->phis()) { in ConnectProlog() 118 PHINode *NewPN = PHINode::Create(PN.getType(), 2, PN.getName() + ".unr"); in ConnectProlog() 122 if (L->contains(&PN)) { in ConnectProlog() 124 NewPN->addIncoming(PN.getIncomingValueForBlock(NewPreHeader), in ConnectProlog() 128 NewPN->addIncoming(PoisonValue::get(PN.getType()), PreHeader); in ConnectProlog() 131 Value *V = PN.getIncomingValueForBlock(Latch); in ConnectProlog() 144 if (L->contains(&PN)) in ConnectProlog() 145 PN.setIncomingValueForBlock(NewPreHeader, NewPN); in ConnectProlog() 147 PN.addIncoming(NewPN, PrologExit); in ConnectProlog() 148 SE.forgetLcssaPhiWithNewPredecessor(L, &PN); in ConnectProlog() [all …]
|
| H A D | UnifyFunctionExitNodes.cpp | 61 PHINode *PN = nullptr; in unifyReturnBlocks() local 66 PN = PHINode::Create(F.getReturnType(), ReturningBlocks.size(), in unifyReturnBlocks() 68 PN->insertInto(NewRetBlock, NewRetBlock->end()); in unifyReturnBlocks() 69 ReturnInst::Create(F.getContext(), PN, NewRetBlock); in unifyReturnBlocks() 77 if (PN) in unifyReturnBlocks() 78 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in unifyReturnBlocks()
|
| H A D | BasicBlockUtils.cpp | 149 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes() local 150 if (PN->getIncomingValue(0) != PN) in FoldSingleEntryPHINodes() 151 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in FoldSingleEntryPHINodes() 153 PN->replaceAllUsesWith(PoisonValue::get(PN->getType())); in FoldSingleEntryPHINodes() 156 MemDep->removeInstruction(PN); // Memdep updates AA itself. in FoldSingleEntryPHINodes() 158 PN->eraseFromParent(); in FoldSingleEntryPHINodes() 171 if (PHINode *PN = dyn_cast_or_null<PHINode>(PHI.operator Value *())) in DeleteDeadPHIs() local 172 Changed |= RecursivelyDeleteDeadPHINode(PN, TLI, MSSAU); in DeleteDeadPHIs() 217 for (PHINode &PN : BB->phis()) in MergeBlockIntoPredecessor() 218 if (llvm::is_contained(PN.incoming_values(), &PN)) in MergeBlockIntoPredecessor() [all …]
|
| H A D | DemoteRegToStack.cpp | 68 if (PHINode *PN = dyn_cast<PHINode>(U)) { in DemoteRegToStack() local 79 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) in DemoteRegToStack() 80 if (PN->getIncomingValue(i) == &I) { in DemoteRegToStack() 81 Value *&V = Loads[PN->getIncomingBlock(i)]; in DemoteRegToStack() 86 PN->getIncomingBlock(i)->getTerminator()->getIterator()); in DemoteRegToStack() 87 Loads[PN->getIncomingBlock(i)] = V; in DemoteRegToStack() 89 PN->setIncomingValue(i, V); in DemoteRegToStack()
|
| H A D | ScalarEvolutionExpander.cpp | 698 bool SCEVExpander::isNormalAddRecExprPHI(PHINode *PN, Instruction *IncV, in isNormalAddRecExprPHI() argument 720 if (IncV == PN) in isNormalAddRecExprPHI() 723 return isNormalAddRecExprPHI(PN, IncV, L); in isNormalAddRecExprPHI() 862 bool SCEVExpander::isExpandedAddRecExprPHI(PHINode *PN, Instruction *IncV, in isExpandedAddRecExprPHI() argument 867 if (IVOper == PN) in isExpandedAddRecExprPHI() 876 Value *SCEVExpander::expandIVInc(PHINode *PN, Value *StepV, const Loop *L, in expandIVInc() argument 880 if (PN->getType()->isPointerTy()) { in expandIVInc() 882 IncV = Builder.CreatePtrAdd(PN, StepV, "scevgep"); in expandIVInc() 885 Builder.CreateSub(PN, StepV, Twine(IVName) + ".iv.next") : in expandIVInc() 886 Builder.CreateAdd(PN, StepV, Twine(IVName) + ".iv.next"); in expandIVInc() [all …]
|
| H A D | CloneFunction.cpp | 771 for (const PHINode &PN : BI.phis()) { in CloneAndPruneIntoFromInst() local 774 if (isa<PHINode>(VMap[&PN])) in CloneAndPruneIntoFromInst() 775 PHIToResolve.push_back(&PN); in CloneAndPruneIntoFromInst() 801 PHINode *PN = cast<PHINode>(VMap[OPN]); in CloneAndPruneIntoFromInst() local 803 Value *V = VMap.lookup(PN->getIncomingBlock(pred)); in CloneAndPruneIntoFromInst() 806 MapValue(PN->getIncomingValue(pred), VMap, in CloneAndPruneIntoFromInst() 809 PN->setIncomingValue(pred, InVal); in CloneAndPruneIntoFromInst() 810 PN->setIncomingBlock(pred, MappedBlock); in CloneAndPruneIntoFromInst() 812 PN->removeIncomingValue(pred, false); in CloneAndPruneIntoFromInst() 824 PHINode *PN = cast<PHINode>(NewBB->begin()); in CloneAndPruneIntoFromInst() local [all …]
|
| H A D | LowerSwitch.cpp | 119 PHINode *PN = cast<PHINode>(&I); in FixPhis() local 122 unsigned Idx = 0, E = PN->getNumIncomingValues(); in FixPhis() 125 if (PN->getIncomingBlock(Idx) == OrigBB) { in FixPhis() 126 PN->setIncomingBlock(Idx, NewBB); in FixPhis() 139 if (PN->getIncomingBlock(Idx) == OrigBB) { in FixPhis() 146 PN->removeIncomingValue(III); in FixPhis() 198 PHINode *PN = cast<PHINode>(&I); in NewLeafBlock() local 199 auto *V = PN->getIncomingValueForBlock(OrigBlock); in NewLeafBlock() 200 PN->addIncoming(V, NewLeaf); in NewLeafBlock() 206 PHINode *PN = cast<PHINode>(I); in NewLeafBlock() local [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ |
| H A D | LoopBoundSplit.cpp | 74 PHINode *PN = cast<PHINode>(Cond.AddRecValue); in analyzeICmp() local 75 Cond.NonPHIAddRecValue = PN->getIncomingValueForBlock(L.getLoopLatch()); in analyzeICmp() 364 for (PHINode &PN : L.getHeader()->phis()) { in splitLoopBound() 367 Builder.CreatePHI(PN.getType(), 1, PN.getName() + ".lcssa"); in splitLoopBound() 368 LCSSAPhi->setDebugLoc(PN.getDebugLoc()); in splitLoopBound() 372 isExitingLatch ? PN.getIncomingValueForBlock(L.getLoopLatch()) : &PN, in splitLoopBound() 376 PHINode *PostLoopPN = cast<PHINode>(VMap[&PN]); in splitLoopBound() 382 if (!SE.isSCEVable(PN.getType())) in splitLoopBound() 385 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in splitLoopBound() 387 PN.getIncomingValueForBlock(L.getLoopLatch())) in splitLoopBound() [all …]
|
| H A D | LoopTermFold.cpp | 128 for (PHINode &PN : L->getHeader()->phis()) { in canFoldTermCondOfLoop() 129 if (ToFold == &PN) in canFoldTermCondOfLoop() 132 if (!SE.isSCEVable(PN.getType())) { in canFoldTermCondOfLoop() 133 LLVM_DEBUG(dbgs() << "IV of phi '" << PN in canFoldTermCondOfLoop() 138 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in canFoldTermCondOfLoop() 141 LLVM_DEBUG(dbgs() << "SCEV of phi '" << PN in canFoldTermCondOfLoop() 164 dbgs() << "Is not safe to expand terminating value for phi node" << PN in canFoldTermCondOfLoop() 173 << PN << "\n"); in canFoldTermCondOfLoop() 179 if (!mustExecuteUBIfPoisonOnPathTo(&PN, LoopLatch->getTerminator(), &DT)) { in canFoldTermCondOfLoop() 180 LLVM_DEBUG(dbgs() << "Can not prove poison safety for IV " << PN << "\n"); in canFoldTermCondOfLoop() [all …]
|
| H A D | GVNSink.cpp | 148 ModelledPHI(const PHINode *PN, in ModelledPHI() argument 155 for (unsigned I = 0, E = PN->getNumIncomingValues(); I != E; ++I) in ModelledPHI() 156 Ops.push_back({PN->getIncomingBlock(I), PN->getIncomingValue(I)}); in ModelledPHI() 566 for (PHINode &PN : BB->phis()) { in analyzeInitialPHIs() 567 auto MPHI = ModelledPHI(&PN, RPOTOrder); in analyzeInitialPHIs() 584 while (PHINode *PN = dyn_cast<PHINode>(I++)) { in foldPointlessPHINodes() local 585 if (!llvm::all_of(PN->incoming_values(), [&](const Value *V) { in foldPointlessPHINodes() 586 return V == PN->getIncomingValue(0); in foldPointlessPHINodes() 589 if (PN->getIncomingValue(0) != PN) in foldPointlessPHINodes() 590 PN->replaceAllUsesWith(PN->getIncomingValue(0)); in foldPointlessPHINodes() [all …]
|
| H A D | CallSiteSplitting.cpp | 336 for (PHINode &PN : TailBB->phis()) { in splitCallSite() 339 if (&*CI == &PN) { in splitCallSite() 340 NewCI->setArgOperand(ArgNo, PN.getIncomingValueForBlock(SplitBlock)); in splitCallSite() 422 for (auto &PN : Parent->phis()) { in isPredicatedOnPHI() local 424 if (&*Arg != &PN) in isPredicatedOnPHI() 426 assert(PN.getNumIncomingValues() == 2 && in isPredicatedOnPHI() 428 if (PN.getIncomingBlock(0) == PN.getIncomingBlock(1)) in isPredicatedOnPHI() 430 if (PN.getIncomingValue(0) == PN.getIncomingValue(1)) in isPredicatedOnPHI() 432 if (isa<Constant>(PN.getIncomingValue(0)) && in isPredicatedOnPHI() 433 isa<Constant>(PN.getIncomingValue(1))) in isPredicatedOnPHI()
|
| /freebsd/contrib/llvm-project/llvm/lib/Analysis/ |
| H A D | PhiValues.cpp | 127 const PhiValues::ValueSet &PhiValues::getValuesForPhi(const PHINode *PN) { in getValuesForPhi() argument 128 unsigned int DepthNumber = DepthMap.lookup(PN); in getValuesForPhi() 131 processPhi(PN, Stack); in getValuesForPhi() 132 DepthNumber = DepthMap.lookup(PN); in getValuesForPhi() 148 if (const PHINode *PN = dyn_cast<PHINode>(V)) in invalidateValue() local 149 DepthMap.erase(PN); in invalidateValue() 169 for (const PHINode &PN : BB.phis()) { in print() local 171 PN.printAsOperand(OS, false); in print() 173 unsigned int N = DepthMap.lookup(&PN); in print() 202 for (const PHINode &PN : BB.phis()) in run() local [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/IR/ |
| H A D | Dominators.cpp | 137 if (auto *PN = dyn_cast<PHINode>(UserInst)) in dominates() local 140 return dominates(BB, PN->getIncomingBlock(U)); in dominates() 266 PHINode *PN = dyn_cast<PHINode>(UserInst); in dominates() local 267 if (PN && PN->getParent() == BBE.getEnd() && in dominates() 268 PN->getIncomingBlock(U) == BBE.getStart()) in dominates() 274 if (PN) in dominates() 275 UseBB = PN->getIncomingBlock(U); in dominates() 296 if (PHINode *PN = dyn_cast<PHINode>(UserInst)) in dominates() local 297 UseBB = PN->getIncomingBlock(U); in dominates() 342 if (PHINode *PN = dyn_cast<PHINode>(I)) in isReachableFromEntry() local [all …]
|
| H A D | SafepointIRVerifier.cpp | 83 bool hasLiveIncomingEdge(const PHINode *PN, const BasicBlock *InBB) const { in hasLiveIncomingEdge() argument 85 const BasicBlock* BB = PN->getParent(); in hasLiveIncomingEdge() 351 if (const auto *PN = dyn_cast<PHINode>(V)) { in getBaseType() local 352 append_range(Worklist, PN->incoming_values()); in getBaseType() 470 bool hasLiveIncomingEdge(const PHINode *PN, const BasicBlock *InBB) const { in hasLiveIncomingEdge() argument 471 return CD.hasLiveIncomingEdge(PN, InBB); in hasLiveIncomingEdge() 665 if (const PHINode *PN = dyn_cast<PHINode>(&I)) { in removeValidUnrelocatedDefs() local 666 if (containsGCPtrType(PN->getType())) { in removeValidUnrelocatedDefs() 670 for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { in removeValidUnrelocatedDefs() 671 const BasicBlock *InBB = PN->getIncomingBlock(i); in removeValidUnrelocatedDefs() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/Hexagon/ |
| H A D | HexagonVectorLoopCarriedReuse.cpp | 369 PHINode *PN = cast<PHINode>(D->front()); in findValueToReuse() local 372 BasicBlock *BB = PN->getParent(); in findValueToReuse() 373 LLVM_DEBUG(dbgs() << "Checking if any uses of " << *PN in findValueToReuse() 377 for (Use &U : PN->uses()) { in findValueToReuse() 502 PHINode *PN = dyn_cast<PHINode>(Op); in findValueInBlock() local 503 assert(PN); in findValueInBlock() 504 Value *ValueInBlock = PN->getIncomingValueForBlock(BB); in findValueInBlock() 590 PHINode *PN = dyn_cast<PHINode>(I); in findDepChainFromPHI() local 591 if (!PN) { in findDepChainFromPHI() 595 auto NumIncomingValues = PN->getNumIncomingValues(); in findDepChainFromPHI() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Vectorize/ |
| H A D | EVLIndVarSimplify.cpp | 190 for (PHINode &PN : BB->phis()) { in run() 191 if (&PN == IndVar) in run() 196 if (PN.getBasicBlockIndex(InitBlock) < 0 || in run() 197 PN.getBasicBlockIndex(BackEdgeBlock) < 0) in run() 202 Value *Init = PN.getIncomingValueForBlock(InitBlock); in run() 220 Value *RecValue = PN.getIncomingValueForBlock(BackEdgeBlock); in run() 223 LLVM_DEBUG(dbgs() << "Found candidate PN of EVL-based IndVar: " << PN in run() 229 m_c_Add(m_ZExtOrSelf(IntrinsicMatch), m_Specific(&PN))) && in run() 230 match(RemTC, m_Sub(m_Value(TC), m_Specific(&PN)))) { in run()
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/ObjCARC/ |
| H A D | ObjCARC.h | 75 void getEquivalentPHIs(PHINodeTy &PN, VectorTy &PHIList) { in getEquivalentPHIs() argument 76 auto *BB = PN.getParent(); in getEquivalentPHIs() 78 if (&P == &PN) // Do not add PN to the list. in getEquivalentPHIs() 80 unsigned I = 0, E = PN.getNumIncomingValues(); in getEquivalentPHIs() 82 auto *BB = PN.getIncomingBlock(I); in getEquivalentPHIs() 83 auto *PNOpnd = PN.getIncomingValue(I)->stripPointerCasts(); in getEquivalentPHIs()
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ |
| H A D | WinEHPrepare.cpp | 75 AllocaInst *insertPHILoads(PHINode *PN, Function &F); 875 auto *PN = dyn_cast<PHINode>(&I); in demotePHIsOnFunclets() local 877 if (!PN) in demotePHIsOnFunclets() 886 for (unsigned I = 0, E = PN->getNumIncomingValues(); I < E; ++I) { in demotePHIsOnFunclets() 888 PN->getIncomingBlock(I)->getFirstNonPHIIt())) { in demotePHIsOnFunclets() 899 AllocaInst *SpillSlot = insertPHILoads(PN, F); in demotePHIsOnFunclets() 901 insertPHIStores(PN, SpillSlot); in demotePHIsOnFunclets() 903 PHINodes.push_back(PN); in demotePHIsOnFunclets() 907 for (auto *PN : PHINodes) { in demotePHIsOnFunclets() local 909 PN->replaceAllUsesWith(PoisonValue::get(PN->getType())); in demotePHIsOnFunclets() [all …]
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/ |
| H A D | SparsePropagation.h | 78 virtual bool IsSpecialCasedPHI(PHINode *PN) { return false; } in IsSpecialCasedPHI() argument 398 void SparseSolver<LatticeKey, LatticeVal, KeyInfo>::visitPHINode(PHINode &PN) { in visitPHINode() argument 402 if (LatticeFunc->IsSpecialCasedPHI(&PN)) { in visitPHINode() 404 LatticeFunc->ComputeInstructionState(PN, ChangedValues, *this); in visitPHINode() 412 LatticeKey Key = KeyInfo::getLatticeKeyFromValue(&PN); in visitPHINode() 422 if (PN.getNumIncomingValues() > 64) { in visitPHINode() 430 for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i) { in visitPHINode() 432 if (!isEdgeFeasible(PN.getIncomingBlock(i), PN.getParent(), true)) in visitPHINode() 437 getValueState(KeyInfo::getLatticeKeyFromValue(PN.getIncomingValue(i))); in visitPHINode() 453 if (PHINode *PN = dyn_cast<PHINode>(&I)) in visitInst() local [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/ |
| H A D | FunctionLoweringInfo.cpp | 289 for (const PHINode &PN : BB.phis()) { in set() local 290 if (PN.use_empty()) in set() 294 if (PN.getType()->isEmptyTy()) in set() 297 DebugLoc DL = PN.getDebugLoc(); in set() 298 Register PHIReg = ValueMap[&PN]; in set() 302 ComputeValueVTs(*TLI, MF->getDataLayout(), PN.getType(), ValueVTs); in set() 443 void FunctionLoweringInfo::ComputePHILiveOutRegInfo(const PHINode *PN) { in ComputePHILiveOutRegInfo() argument 444 Type *Ty = PN->getType(); in ComputePHILiveOutRegInfo() 454 if (TLI->getNumRegisters(PN->getContext(), IntVT) != 1) in ComputePHILiveOutRegInfo() 456 IntVT = TLI->getRegisterType(PN->getContext(), IntVT); in ComputePHILiveOutRegInfo() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/XCore/ |
| H A D | XCoreLowerThreadLocal.cpp | 82 if (PHINode *PN = dyn_cast<PHINode>(WU)) { in replaceConstantExprOp() local 83 for (int I = 0, E = PN->getNumIncomingValues(); I < E; ++I) in replaceConstantExprOp() 84 if (PN->getIncomingValue(I) == CE) { in replaceConstantExprOp() 85 BasicBlock *PredBB = PN->getIncomingBlock(I); in replaceConstantExprOp() 87 PredBB = SplitEdge(PredBB, PN->getParent()); in replaceConstantExprOp() 92 PN->setOperand(I, NewInst); in replaceConstantExprOp()
|