@@ -905,14 +905,14 @@ llvm::Function *CodeGen_LLVM::add_argv_wrapper(llvm::Function *fn,
905
905
for (llvm::Function::arg_iterator i = fn->arg_begin (); i != fn->arg_end (); i++) {
906
906
// Get the address of the nth argument
907
907
llvm::Value *ptr = builder->CreateConstGEP1_32 (arg_array, wrapper_args.size ());
908
- ptr = builder->CreateLoad (ptr);
908
+ ptr = builder->CreateLoad (ptr-> getType ()-> getPointerElementType (), ptr );
909
909
if (i->getType () == halide_buffer_t_type->getPointerTo ()) {
910
910
// Cast the argument to a halide_buffer_t *
911
911
wrapper_args.push_back (builder->CreatePointerCast (ptr, halide_buffer_t_type->getPointerTo ()));
912
912
} else {
913
913
// Cast to the appropriate type and load
914
914
ptr = builder->CreatePointerCast (ptr, i->getType ()->getPointerTo ());
915
- wrapper_args.push_back (builder->CreateLoad (ptr));
915
+ wrapper_args.push_back (builder->CreateLoad (ptr-> getType ()-> getPointerElementType (), ptr ));
916
916
}
917
917
}
918
918
debug (4 ) << " Creating call from wrapper to actual function\n " ;
@@ -923,7 +923,7 @@ llvm::Function *CodeGen_LLVM::add_argv_wrapper(llvm::Function *fn,
923
923
if (result_in_argv) {
924
924
llvm::Value *result_in_argv_ptr = builder->CreateConstGEP1_32 (arg_array, wrapper_args.size ());
925
925
if (fn->getReturnType () != void_t ) {
926
- result_in_argv_ptr = builder->CreateLoad (result_in_argv_ptr);
926
+ result_in_argv_ptr = builder->CreateLoad (result_in_argv_ptr-> getType ()-> getPointerElementType (), result_in_argv_ptr );
927
927
// Cast to the appropriate type and store
928
928
result_in_argv_ptr = builder->CreatePointerCast (result_in_argv_ptr, fn->getReturnType ()->getPointerTo ());
929
929
builder->CreateStore (result, result_in_argv_ptr);
@@ -1901,7 +1901,7 @@ void CodeGen_LLVM::visit(const Load *op) {
1901
1901
if (op->type .is_scalar ()) {
1902
1902
// Scalar loads
1903
1903
Value *ptr = codegen_buffer_pointer (op->name , op->type , op->index );
1904
- LoadInst *load = builder->CreateAlignedLoad (ptr, llvm::Align (op->type .bytes ()));
1904
+ LoadInst *load = builder->CreateAlignedLoad (ptr-> getType ()-> getPointerElementType (), ptr , llvm::Align (op->type .bytes ()));
1905
1905
add_tbaa_metadata (load, op->name , op->index );
1906
1906
value = load;
1907
1907
} else {
@@ -1996,7 +1996,7 @@ void CodeGen_LLVM::visit(const Load *op) {
1996
1996
value = UndefValue::get (llvm_type_of (op->type ));
1997
1997
for (int i = 0 ; i < ramp->lanes ; i++) {
1998
1998
Value *lane = ConstantInt::get (i32_t , i);
1999
- LoadInst *val = builder->CreateLoad (ptr);
1999
+ LoadInst *val = builder->CreateLoad (ptr-> getType ()-> getPointerElementType (), ptr );
2000
2000
add_tbaa_metadata (val, op->name , op->index );
2001
2001
value = builder->CreateInsertElement (value, val, lane);
2002
2002
ptr = builder->CreateInBoundsGEP (ptr, stride);
@@ -2011,7 +2011,7 @@ void CodeGen_LLVM::visit(const Load *op) {
2011
2011
for (int i = 0 ; i < op->type .lanes (); i++) {
2012
2012
Expr idx = extract_lane (op->index , i);
2013
2013
Value *ptr = codegen_buffer_pointer (op->name , op->type .element_of (), idx);
2014
- LoadInst *val = builder->CreateLoad (ptr);
2014
+ LoadInst *val = builder->CreateLoad (ptr-> getType ()-> getPointerElementType (), ptr );
2015
2015
add_tbaa_metadata (val, op->name , op->index );
2016
2016
vec = builder->CreateInsertElement (vec, val, ConstantInt::get (i32_t , i));
2017
2017
}
@@ -2023,7 +2023,7 @@ void CodeGen_LLVM::visit(const Load *op) {
2023
2023
for (int i = 0 ; i < op->type .lanes (); i++) {
2024
2024
Value *idx = builder->CreateExtractElement (index , ConstantInt::get (i32_t , i));
2025
2025
Value *ptr = codegen_buffer_pointer (op->name , op->type .element_of (), idx);
2026
- LoadInst *val = builder->CreateLoad (ptr);
2026
+ LoadInst *val = builder->CreateLoad (ptr-> getType ()-> getPointerElementType (), ptr );
2027
2027
add_tbaa_metadata (val, op->name , op->index );
2028
2028
vec = builder->CreateInsertElement (vec, val, ConstantInt::get (i32_t , i));
2029
2029
}
@@ -2315,7 +2315,7 @@ llvm::Value *CodeGen_LLVM::codegen_dense_vector_load(const Type &type, const std
2315
2315
load_inst = builder->CreateMaskedLoad (vec_ptr, align_bytes, slice_mask);
2316
2316
#endif
2317
2317
} else {
2318
- load_inst = builder->CreateAlignedLoad (vec_ptr, llvm::Align (align_bytes));
2318
+ load_inst = builder->CreateAlignedLoad (vec_ptr-> getType ()-> getPointerElementType (), vec_ptr , llvm::Align (align_bytes));
2319
2319
}
2320
2320
add_tbaa_metadata (load_inst, name, slice_index);
2321
2321
slices.push_back (load_inst);
@@ -2469,7 +2469,7 @@ void CodeGen_LLVM::codegen_atomic_store(const Store *op) {
2469
2469
Value *idx = builder->CreateExtractElement (vec_index, ConstantInt::get (i32_t , lane_id));
2470
2470
ptr = codegen_buffer_pointer (op->name , value_type.element_of (), idx);
2471
2471
}
2472
- LoadInst *orig = builder->CreateAlignedLoad (ptr, llvm::Align (value_type.bytes ()));
2472
+ LoadInst *orig = builder->CreateAlignedLoad (ptr-> getType ()-> getPointerElementType (), ptr , llvm::Align (value_type.bytes ()));
2473
2473
orig->setOrdering (AtomicOrdering::Monotonic);
2474
2474
add_tbaa_metadata (orig, op->name , op->index );
2475
2475
// Explicit fall through from the current block to the cas loop body.
@@ -3068,7 +3068,7 @@ void CodeGen_LLVM::visit(const Call *op) {
3068
3068
GlobalValue::PrivateLinkage,
3069
3069
ConstantPointerNull::get (base_fn->getType ()),
3070
3070
global_name);
3071
- LoadInst *loaded_value = builder->CreateLoad (global);
3071
+ LoadInst *loaded_value = builder->CreateLoad (global-> getType ()-> getPointerElementType (), global );
3072
3072
3073
3073
BasicBlock *global_inited_bb = BasicBlock::Create (*context, " global_inited_bb" , function);
3074
3074
BasicBlock *global_not_inited_bb = BasicBlock::Create (*context, " global_not_inited_bb" , function);
0 commit comments