Skip to content

Commit

Permalink
[NFC] Delete some dead/unreachable code in CGCall (microsoft#5069)
Browse files Browse the repository at this point in the history
This code is all unreachable. Reverting this strips out some cascading
changes adding an unused parameter to a few functions.
  • Loading branch information
llvm-beanz authored Mar 1, 2023
1 parent 129024c commit 44ba911
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 30 deletions.
22 changes: 8 additions & 14 deletions tools/clang/lib/CodeGen/CGCall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -988,17 +988,13 @@ static llvm::Value *CreateCoercedLoad(llvm::Value *SrcPtr,
// FIXME: Do we need to recurse here?
static void BuildAggStore(CodeGenFunction &CGF, llvm::Value *Val,
llvm::Value *DestPtr, bool DestIsVolatile,
CharUnits DestAlign,
QualType QTy // HLSL Change
) {
CharUnits DestAlign) {
// Prefer scalar stores to first-class aggregate stores.
if (llvm::StructType *STy =
dyn_cast<llvm::StructType>(Val->getType())) {
// HLSL Change Begins
if (CGF.getLangOpts().HLSL) {
CGF.CGM.getHLSLRuntime().EmitHLSLAggregateStore(CGF, Val, DestPtr, QTy);
return;
}
assert(!CGF.getLangOpts().HLSL &&
"HLSL uses SRet so this should not be possible to reach.");
// HLSL Change Ends
const llvm::StructLayout *Layout =
CGF.CGM.getDataLayout().getStructLayout(STy);
Expand Down Expand Up @@ -1028,9 +1024,7 @@ static void CreateCoercedStore(llvm::Value *Src,
llvm::Value *DstPtr,
bool DstIsVolatile,
CharUnits DstAlign,
CodeGenFunction &CGF,
QualType QTy // HLSL Change
) {
CodeGenFunction &CGF) {
llvm::Type *SrcTy = Src->getType();
llvm::Type *DstTy =
cast<llvm::PointerType>(DstPtr->getType())->getElementType();
Expand Down Expand Up @@ -1063,7 +1057,7 @@ static void CreateCoercedStore(llvm::Value *Src,
if (SrcSize <= DstSize) {
llvm::Value *Casted =
CGF.Builder.CreateBitCast(DstPtr, llvm::PointerType::getUnqual(SrcTy));
BuildAggStore(CGF, Src, Casted, DstIsVolatile, DstAlign, QTy); // HLSL Change - Add QTy
BuildAggStore(CGF, Src, Casted, DstIsVolatile, DstAlign);
} else {
// Otherwise do coercion through memory. This is stupid, but
// simple.
Expand Down Expand Up @@ -2082,7 +2076,7 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI,
assert(NumIRArgs == 1);
auto AI = FnArgs[FirstIRArg];
AI->setName(Arg->getName() + ".coerce");
CreateCoercedStore(AI, Ptr, /*DestIsVolatile=*/false, PtrAlign, *this, Ty); // HLSL Change - Add Ty.
CreateCoercedStore(AI, Ptr, /*DestIsVolatile=*/false, PtrAlign, *this);
}


Expand Down Expand Up @@ -3724,7 +3718,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
DestPtr = CreateMemTemp(RetTy, "agg.tmp");
DestIsVolatile = false;
}
BuildAggStore(*this, CI, DestPtr, DestIsVolatile, DestAlign, RetTy); // HLSL Change - Add QualTy.
BuildAggStore(*this, CI, DestPtr, DestIsVolatile, DestAlign);
return RValue::getAggregate(DestPtr);
}
case TEK_Scalar: {
Expand Down Expand Up @@ -3760,7 +3754,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
StoreAlign =
StoreAlign.alignmentAtOffset(CharUnits::fromQuantity(Offs));
}
CreateCoercedStore(CI, StorePtr, DestIsVolatile, StoreAlign, *this, RetTy); // HLSL Change - Add QTy.
CreateCoercedStore(CI, StorePtr, DestIsVolatile, StoreAlign, *this);

return convertTempToRValue(DestPtr, RetTy, SourceLocation());
}
Expand Down
16 changes: 3 additions & 13 deletions tools/clang/lib/CodeGen/CGHLSLMS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,10 +270,6 @@ class CGMSHLSLRuntime : public CGHLSLRuntime {
llvm::Value *DestPtr,
clang::QualType Ty) override;

void EmitHLSLAggregateStore(CodeGenFunction &CGF, llvm::Value *Val,
llvm::Value *DestPtr,
clang::QualType Ty) override;

void EmitHLSLFlatConversion(CodeGenFunction &CGF, Value *Val,
Value *DestPtr,
QualType Ty,
Expand Down Expand Up @@ -5691,9 +5687,9 @@ void CGMSHLSLRuntime::EmitHLSLFlatConversionAggregateCopy(CodeGenFunction &CGF,
}
}

// It is possible to implement EmitHLSLAggregateCopy, EmitHLSLAggregateStore
// the same way. But split value to scalar will generate many instruction when
// src type is same as dest type.
// It is possible to implement EmitHLSLAggregateCopy, the same way. But split
// value to scalar will generate many instruction when src type is same as
// dest type.
SmallVector<Value *, 4> GEPIdxStack;
SmallVector<Value *, 4> SrcPtrs;
SmallVector<QualType, 4> SrcQualTys;
Expand All @@ -5712,12 +5708,6 @@ void CGMSHLSLRuntime::EmitHLSLFlatConversionAggregateCopy(CodeGenFunction &CGF,
ConvertAndStoreElements(CGF, SrcVals, SrcQualTys, DstPtrs, DstQualTys);
}

void CGMSHLSLRuntime::EmitHLSLAggregateStore(CodeGenFunction &CGF, llvm::Value *SrcVal,
llvm::Value *DestPtr,
clang::QualType Ty) {
DXASSERT(0, "aggregate return type will use SRet, no aggregate store should exist");
}

// Either copies a scalar to a scalar, a scalar to a vector, or splats a scalar to a vector
static void SimpleFlatValCopy(CodeGenFunction &CGF,
Value *SrcVal, QualType SrcQualTy, Value *DstPtr, QualType DstQualTy) {
Expand Down
3 changes: 0 additions & 3 deletions tools/clang/lib/CodeGen/CGHLSLRuntime.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,6 @@ class CGHLSLRuntime {
virtual void EmitHLSLAggregateCopy(CodeGenFunction &CGF, llvm::Value *SrcPtr,
llvm::Value *DestPtr,
clang::QualType Ty) = 0;
virtual void EmitHLSLAggregateStore(CodeGenFunction &CGF, llvm::Value *Val,
llvm::Value *DestPtr,
clang::QualType Ty) = 0;
virtual void EmitHLSLFlatConversion(CodeGenFunction &CGF, llvm::Value *Val,
llvm::Value *DestPtr,
clang::QualType Ty, clang::QualType SrcTy) = 0;
Expand Down

0 comments on commit 44ba911

Please sign in to comment.