Skip to content

Commit

Permalink
Remove some frivolous (p)*jl types (#44469)
Browse files Browse the repository at this point in the history
  • Loading branch information
pchintalapudi authored Mar 30, 2022
1 parent f562ad0 commit 7c2edc5
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 25 deletions.
11 changes: 6 additions & 5 deletions src/llvm-alloc-opt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ void Optimizer::moveToStack(CallInst *orig_inst, size_t sz, bool has_ref)
ptr = cast<Instruction>(prolog_builder.CreateBitCast(buff, Type::getInt8PtrTy(prolog_builder.getContext())));
}
insertLifetime(ptr, ConstantInt::get(Type::getInt64Ty(prolog_builder.getContext()), sz), orig_inst);
auto new_inst = cast<Instruction>(prolog_builder.CreateBitCast(ptr, pass.T_pjlvalue));
auto new_inst = cast<Instruction>(prolog_builder.CreateBitCast(ptr, JuliaType::get_pjlvalue_ty(prolog_builder.getContext())));
new_inst->takeName(orig_inst);

auto simple_replace = [&] (Instruction *orig_i, Instruction *new_i) {
Expand Down Expand Up @@ -945,13 +945,14 @@ void Optimizer::splitOnStack(CallInst *orig_inst)
StoreInst *newstore;
if (slot.isref) {
assert(slot.offset == offset);
auto T_pjlvalue = JuliaType::get_pjlvalue_ty(builder.getContext());
if (!isa<PointerType>(store_ty)) {
store_val = builder.CreateBitCast(store_val, getSizeTy(builder.getContext()));
store_val = builder.CreateIntToPtr(store_val, pass.T_pjlvalue);
store_ty = pass.T_pjlvalue;
store_val = builder.CreateIntToPtr(store_val, T_pjlvalue);
store_ty = T_pjlvalue;
}
else {
store_ty = PointerType::getWithSamePointeeType(pass.T_pjlvalue, cast<PointerType>(store_ty)->getAddressSpace());
store_ty = PointerType::getWithSamePointeeType(T_pjlvalue, cast<PointerType>(store_ty)->getAddressSpace());
store_val = builder.CreateBitCast(store_val, store_ty);
}
if (cast<PointerType>(store_ty)->getAddressSpace() != AddressSpace::Tracked)
Expand Down Expand Up @@ -1010,7 +1011,7 @@ void Optimizer::splitOnStack(CallInst *orig_inst)
uint64_t intval;
memset(&intval, val, 8);
Constant *val = ConstantInt::get(getSizeTy(builder.getContext()), intval);
val = ConstantExpr::getIntToPtr(val, pass.T_pjlvalue);
val = ConstantExpr::getIntToPtr(val, JuliaType::get_pjlvalue_ty(builder.getContext()));
ptr = ConstantExpr::getAddrSpaceCast(val, pass.T_prjlvalue);
}
StoreInst *store = builder.CreateAlignedStore(ptr, slot.slot, Align(sizeof(void*)));
Expand Down
1 change: 1 addition & 0 deletions src/llvm-final-gc-lowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ void FinalLowerGC::lowerPushGCFrame(CallInst *target, Function &F)
getSizeTy(F.getContext())->getPointerTo()),
Align(sizeof(void*)));
inst->setMetadata(LLVMContext::MD_tbaa, tbaa_gcframe);
auto T_ppjlvalue = JuliaType::get_ppjlvalue_ty(F.getContext());
inst = builder.CreateAlignedStore(
builder.CreateAlignedLoad(T_ppjlvalue, pgcstack, Align(sizeof(void*))),
builder.CreatePointerCast(
Expand Down
4 changes: 2 additions & 2 deletions src/llvm-late-gc-lowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2291,7 +2291,7 @@ bool LateLowerGCFrame::CleanupIR(Function &F, State *S, bool *CFGModified) {
/* No replacement */
} else if (pointer_from_objref_func != nullptr && callee == pointer_from_objref_func) {
auto *obj = CI->getOperand(0);
auto *ASCI = new AddrSpaceCastInst(obj, T_pjlvalue, "", CI);
auto *ASCI = new AddrSpaceCastInst(obj, JuliaType::get_pjlvalue_ty(obj->getContext()), "", CI);
ASCI->takeName(CI);
CI->replaceAllUsesWith(ASCI);
UpdatePtrNumbering(CI, ASCI, S);
Expand Down Expand Up @@ -2374,7 +2374,7 @@ bool LateLowerGCFrame::CleanupIR(Function &F, State *S, bool *CFGModified) {
builder.SetCurrentDebugLocation(CI->getDebugLoc());
auto tag = EmitLoadTag(builder, CI->getArgOperand(0));
auto masked = builder.CreateAnd(tag, ConstantInt::get(T_size, ~(uintptr_t)15));
auto typ = builder.CreateAddrSpaceCast(builder.CreateIntToPtr(masked, T_pjlvalue),
auto typ = builder.CreateAddrSpaceCast(builder.CreateIntToPtr(masked, JuliaType::get_pjlvalue_ty(masked->getContext())),
T_prjlvalue);
typ->takeName(CI);
CI->replaceAllUsesWith(typ);
Expand Down
12 changes: 2 additions & 10 deletions src/llvm-pass-helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@
using namespace llvm;

JuliaPassContext::JuliaPassContext()
: T_jlvalue(nullptr), T_prjlvalue(nullptr),
T_ppjlvalue(nullptr), T_pjlvalue(nullptr), T_pjlvalue_der(nullptr),
T_ppjlvalue_der(nullptr),
: T_prjlvalue(nullptr),

tbaa_gcframe(nullptr), tbaa_tag(nullptr),

Expand Down Expand Up @@ -64,13 +62,7 @@ void JuliaPassContext::initAll(Module &M)
auto &ctx = M.getContext();

// Construct derived types.
T_jlvalue = StructType::get(ctx);
T_pjlvalue = PointerType::get(T_jlvalue, 0);
T_prjlvalue = PointerType::get(T_jlvalue, AddressSpace::Tracked);
T_ppjlvalue = PointerType::get(T_pjlvalue, 0);
T_pjlvalue_der = PointerType::get(T_jlvalue, AddressSpace::Derived);
T_ppjlvalue_der = PointerType::get(T_prjlvalue, AddressSpace::Derived);
T_pppjlvalue = PointerType::get(T_ppjlvalue, 0);
T_prjlvalue = JuliaType::get_prjlvalue_ty(ctx);
}

llvm::CallInst *JuliaPassContext::getPGCstack(llvm::Function &F) const
Expand Down
6 changes: 0 additions & 6 deletions src/llvm-pass-helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,7 @@ namespace jl_intrinsics {
struct JuliaPassContext {

// Types derived from 'jl_value_t'.
llvm::Type *T_jlvalue;
llvm::PointerType *T_prjlvalue;
llvm::PointerType *T_pppjlvalue;
llvm::PointerType *T_ppjlvalue;
llvm::PointerType *T_pjlvalue;
llvm::PointerType *T_pjlvalue_der;
llvm::PointerType *T_ppjlvalue_der;

// TBAA metadata nodes.
llvm::MDNode *tbaa_gcframe;
Expand Down
2 changes: 0 additions & 2 deletions src/llvm-ptls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ struct LowerPTLS {
MDNode *tbaa_const;
FunctionType *FT_pgcstack_getter;
PointerType *T_pgcstack_getter;
PointerType *T_ppjlvalue;
PointerType *T_pppjlvalue;
GlobalVariable *pgcstack_func_slot{nullptr};
GlobalVariable *pgcstack_key_slot{nullptr};
Expand Down Expand Up @@ -266,7 +265,6 @@ bool LowerPTLS::runOnModule(Module &_M, bool *CFGModified)
#endif
T_pgcstack_getter = FT_pgcstack_getter->getPointerTo();
T_pppjlvalue = cast<PointerType>(FT_pgcstack_getter->getReturnType());
T_ppjlvalue = JuliaType::get_ppjlvalue_ty(_M.getContext());
if (imaging_mode) {
pgcstack_func_slot = create_aliased_global(T_pgcstack_getter, "jl_pgcstack_func_slot");
pgcstack_key_slot = create_aliased_global(getSizeTy(_M.getContext()), "jl_pgcstack_key_slot"); // >= sizeof(jl_pgcstack_key_t)
Expand Down

0 comments on commit 7c2edc5

Please sign in to comment.