Skip to content

Commit

Permalink
[another test commit, just to tickle the selfhost buildbots; I'll bac…
Browse files Browse the repository at this point in the history
…k out in a few minutes]

second round of low-level interface squeeze-out:
making all of CallInst's low-level operand accessors
private

If you get compile errors I strongly urge you to
update your code.


I tried to write the necessary clues into the
header where the compiler may point to, but no
guarantees. It works for my GCC.

You have several options to update your code:

- you can use the v2.8 ArgOperand accessors
- you can go via a temporary CallSite
- you can upcast to, say, User and call its
  low-level accessors if your code is definitely
  operand-order agnostic.

If you run into serious problems, please
comment in below thread (and back out this
revision only if absolutely necessary):

<http://groups.google.com/group/llvm-dev/browse_thread/thread/64650cf343b28271>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107580 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
ggreif committed Jul 4, 2010
1 parent b482829 commit 4de8ba8
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion include/llvm/Instructions.h
Original file line number Diff line number Diff line change
Expand Up @@ -940,8 +940,24 @@ class CallInst : public Instruction {
unsigned(isTC));
}

/// @deprecated these "define hacks" will go away soon
/// @brief coerce out-of-tree code to abandon the low-level interfaces
/// @detail see below comments and update your code to high-level interfaces
/// in LLVM v2.8-only code
/// - getOperand(N+1) ---> getArgOperand(N)
/// - setOperand(N+1, V) ---> setArgOperand(N, V)
/// - getNumOperands() ---> getNumArgOperands()+1 // note the "+1"!
///
/// in backward compatible code please consult llvm/Support/CallSite.h,
/// you should create a callsite using the CallInst pointer and call its methods
///
# define public private
# define protected private
/// Provide fast operand accessors
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
# undef public
# undef protected
public:

enum { ArgOffset = 1 }; ///< temporary, do not use for new code!
unsigned getNumArgOperands() const { return getNumOperands() - 1; }
Expand All @@ -951,7 +967,7 @@ class CallInst : public Instruction {
/// Provide compile-time errors for accessing operand 0
/// @deprecated these will go away soon
/// @detail see below comments and update your code to high-level interfaces
/// - getOperand(0) ---> getCalledValue()
/// - getOperand(0) ---> getCalledValue(), or possibly getCalledFunction()
/// - setOperand(0, V) ---> setCalledFunction(V)
///
private:
Expand Down Expand Up @@ -1107,6 +1123,10 @@ CallInst::CallInst(Value *Func, InputIterator ArgBegin, InputIterator ArgEnd,
typename std::iterator_traits<InputIterator>::iterator_category());
}


// Note: if you get compile errors about private methods then
// please update your code to use the high-level operand
// interfaces. See line 943 above.
DEFINE_TRANSPARENT_OPERAND_ACCESSORS(CallInst, Value)

//===----------------------------------------------------------------------===//
Expand Down

0 comments on commit 4de8ba8

Please sign in to comment.