Author: Nikita Popov Date: 2021-07-09T21:14:41+02:00 New Revision: c476566be5d025a3f122392af481a74f887911e6
URL: https://github.com/llvm/llvm-project/commit/c476566be5d025a3f122392af481a74f887911e6 DIFF: https://github.com/llvm/llvm-project/commit/c476566be5d025a3f122392af481a74f887911e6.diff LOG: [IRForTarget] Don't pass nullptr to GetElementPtrInst::Create() (NFC) In one case use the source element type of the original GEP. In the other the correct type isn't obvious to me, so use getPointerElementType() for now. Added: Modified: lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp Removed: ################################################################################ diff --git a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp index 15d160787ea4..b3188ec56fdf 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp @@ -14,6 +14,7 @@ #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" +#include "llvm/IR/Operator.h" #include "llvm/IR/InstrTypes.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Intrinsics.h" @@ -1574,7 +1575,8 @@ bool IRForTarget::UnfoldConstant(Constant *old_constant, FunctionValueCache get_element_pointer_maker( [&value_maker, &entry_instruction_finder, old_constant, constant_expr](llvm::Function *function) -> llvm::Value * { - Value *ptr = constant_expr->getOperand(0); + auto *gep = cast<llvm::GEPOperator>(constant_expr); + Value *ptr = gep->getPointerOperand(); if (ptr == old_constant) ptr = value_maker.GetValue(function); @@ -1597,7 +1599,7 @@ bool IRForTarget::UnfoldConstant(Constant *old_constant, ArrayRef<Value *> indices(index_vector); return GetElementPtrInst::Create( - nullptr, ptr, indices, "", + gep->getSourceElementType(), ptr, indices, "", llvm::cast<Instruction>( entry_instruction_finder.GetValue(function))); }); @@ -1780,7 +1782,8 @@ bool IRForTarget::ReplaceVariables(Function &llvm_function) { ConstantInt *offset_int( ConstantInt::get(offset_type, offset, true)); GetElementPtrInst *get_element_ptr = GetElementPtrInst::Create( - nullptr, argument, offset_int, "", entry_instruction); + argument->getType()->getPointerElementType(), argument, + offset_int, "", entry_instruction); if (name == m_result_name && !m_result_is_pointer) { BitCastInst *bit_cast = new BitCastInst( _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits