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

References

tools/clang/lib/CodeGen/CGExprComplex.cpp
   50     : CGF(cgf), Builder(CGF.Builder), IgnoreReal(ir), IgnoreImag(ii) {
   73     return EmitLoadOfLValue(CGF.EmitLValue(E), E->getExprLoc());
   94     ApplyDebugLocation DL(CGF, E);
   99     S->dump(CGF.getContext().getSourceManager());
  116     return CGF.EmitCoawaitExpr(*S).getComplexVal();
  119     return CGF.EmitCoyieldExpr(*S).getComplexVal();
  129       return EmitLoadOfLValue(Constant.getReferenceLValue(CGF, E),
  139     if (CodeGenFunction::ConstantEmission Constant = CGF.tryEmitAsConstant(E))
  147     return CGF.EmitObjCMessageExpr(E).getComplexVal();
  152             CGF.tryEmitAsConstant(ME)) {
  153       CGF.EmitIgnoredExpr(ME->getBase());
  160       return EmitLoadOfLValue(CGF.getOrCreateOpaqueLValueMapping(E),
  162     return CGF.getOrCreateOpaqueRValueMapping(E).getComplexVal();
  166     return CGF.EmitPseudoObjectRValue(E).getComplexVal();
  179       CGF.CGM.EmitExplicitCastExprType(ECE, &CGF);
  179       CGF.CGM.EmitExplicitCastExprType(ECE, &CGF);
  188     LValue LV = CGF.EmitLValue(E->getSubExpr());
  189     return CGF.EmitComplexPrePostIncDec(E, LV, isInc, isPre);
  216     CodeGenFunction::CXXDefaultArgExprScope Scope(CGF, DAE);
  220     CodeGenFunction::CXXDefaultInitExprScope Scope(CGF, DIE);
  224     CGF.enterFullExpression(E);
  225     CodeGenFunction::RunCleanupsScope Scope(CGF);
  235     llvm::Constant *Null = llvm::Constant::getNullValue(CGF.ConvertType(Elem));
  242                        llvm::Constant::getNullValue(CGF.ConvertType(Elem));
  324     return CGF.EmitAtomicExpr(E).getComplexVal();
  349     return CGF.EmitAtomicLoad(lvalue, loc).getComplexVal();
  357     Address RealP = CGF.emitAddrOfRealComponent(SrcPtr, lvalue.getType());
  362     Address ImagP = CGF.emitAddrOfImagComponent(SrcPtr, lvalue.getType());
  374       (!isInit && CGF.LValueIsSuitableForInlineAtomic(lvalue)))
  375     return CGF.EmitAtomicStore(RValue::getComplex(Val), lvalue, isInit);
  378   Address RealPtr = CGF.emitAddrOfRealComponent(Ptr, lvalue.getType());
  379   Address ImagPtr = CGF.emitAddrOfImagComponent(Ptr, lvalue.getType());
  392   CGF.ErrorUnsupported(E, "complex expression");
  394     CGF.ConvertType(getComplexType(E->getType())->getElementType());
  401   llvm::Value *Imag = CGF.EmitScalarExpr(IL->getSubExpr());
  407   if (E->getCallReturnType(CGF.getContext())->isReferenceType())
  410   return CGF.EmitCallExpr(E).getComplexVal();
  414   CodeGenFunction::StmtExprEvaluation eval(CGF);
  415   Address RetAlloca = CGF.EmitCompoundStmt(*E->getSubStmt(), true);
  417   return EmitLoadOfLValue(CGF.MakeAddrLValue(RetAlloca, E->getType()),
  433   Val.first = CGF.EmitScalarConversion(Val.first, SrcType, DestType, Loc);
  434   Val.second = CGF.EmitScalarConversion(Val.second, SrcType, DestType, Loc);
  444   Val = CGF.EmitScalarConversion(Val, SrcType, DestType, Loc);
  465     LValue origLV = CGF.EmitLValue(Op);
  467     V = Builder.CreateElementBitCast(V, CGF.ConvertType(DestTy));
  468     return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc());
  472     LValue SourceLVal = CGF.EmitLValue(Op);
  474                                                 CGF.ConvertTypeForMem(DestTy));
  475     LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy);
  532     return EmitScalarToComplexCast(CGF.EmitScalarExpr(Op), Op->getType(),
  638   QualType FQTy = CGF.getContext().getFunctionType(Op.Ty, ArgsQTys, EPI);
  639   const CGFunctionInfo &FuncInfo = CGF.CGM.getTypes().arrangeFreeFunctionCall(
  642   llvm::FunctionType *FTy = CGF.CGM.getTypes().GetFunctionType(FuncInfo);
  643   llvm::FunctionCallee Func = CGF.CGM.CreateRuntimeFunction(
  648   RValue Res = CGF.EmitCall(FuncInfo, Callee, ReturnValueSlot(), Args, &Call);
  649   Call->setCallingConv(CGF.CGM.getRuntimeCC());
  679   llvm::MDBuilder MDHelper(CGF.getLLVMContext());
  714       llvm::BasicBlock *ContBB = CGF.createBasicBlock("complex_mul_cont");
  715       llvm::BasicBlock *INaNBB = CGF.createBasicBlock("complex_mul_imag_nan");
  725       CGF.EmitBlock(INaNBB);
  727       llvm::BasicBlock *LibCallBB = CGF.createBasicBlock("complex_mul_libcall");
  732       CGF.EmitBlock(LibCallBB);
  740       CGF.EmitBlock(ContBB);
  791     if (RHSi && !CGF.getLangOpts().FastMath) {
  872     Ops.LHS = ComplexPairTy(CGF.EmitScalarExpr(E->getLHS()), nullptr);
  876     Ops.RHS = ComplexPairTy(CGF.EmitScalarExpr(E->getRHS()), nullptr);
  906         CGF.getContext()
  908     OpInfo.RHS = ComplexPairTy(CGF.EmitScalarExpr(E->getRHS()), nullptr);
  910     assert(CGF.getContext()
  915   LValue LHS = CGF.EmitLValue(E->getLHS());
  923     llvm::Value *LHSVal = CGF.EmitLoadOfScalar(LHS, Loc);
  927       if (!CGF.getContext().hasSameUnqualifiedType(ComplexElementTy, LHSTy))
  928         LHSVal = CGF.EmitScalarConversion(LHSVal, LHSTy, ComplexElementTy, Loc);
  946         CGF.EmitComplexToScalarConversion(Result, OpInfo.Ty, LHSTy, Loc);
  947     CGF.EmitStoreOfScalar(ResVal, LHS, /*isInit*/ false);
  962   if (!CGF.getLangOpts().CPlusPlus)
  974   assert(CGF.getContext().hasSameUnqualifiedType(E->getLHS()->getType(),
  984   LValue LHS = CGF.EmitLValue(E->getLHS());
  997   if (!CGF.getLangOpts().CPlusPlus)
 1008   CGF.EmitIgnoredExpr(E->getLHS());
 1016   llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true");
 1017   llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false");
 1018   llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end");
 1021   CodeGenFunction::OpaqueValueMapping binding(CGF, E);
 1024   CodeGenFunction::ConditionalEvaluation eval(CGF);
 1025   CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock,
 1026                            CGF.getProfileCount(E));
 1028   eval.begin(CGF);
 1029   CGF.EmitBlock(LHSBlock);
 1030   CGF.incrementProfileCounter(E);
 1033   CGF.EmitBranch(ContBlock);
 1034   eval.end(CGF);
 1036   eval.begin(CGF);
 1037   CGF.EmitBlock(RHSBlock);
 1040   CGF.EmitBlock(ContBlock);
 1041   eval.end(CGF);
 1069     llvm::Value *Real = CGF.EmitScalarExpr(E->getInit(0));
 1070     llvm::Value *Imag = CGF.EmitScalarExpr(E->getInit(1));
 1079   llvm::Type* LTy = CGF.ConvertType(Ty);
 1086   Address ArgPtr = CGF.EmitVAArg(E, ArgValue);
 1089     CGF.ErrorUnsupported(E, "complex va_arg expression");
 1091       CGF.ConvertType(E->getType()->castAs<ComplexType>()->getElementType());
 1096   return EmitLoadOfLValue(CGF.MakeAddrLValue(ArgPtr, E->getType()),