[llvm] r220994 - IR: MDNode => Value: Instruction::setMetadata()

David Blaikie dblaikie at gmail.com
Tue Nov 4 15:10:15 PST 2014


On Tue, Nov 4, 2014 at 3:06 PM, Eric Christopher <echristo at gmail.com> wrote:

>
>
> On Fri Oct 31 2014 at 1:29:34 PM Duncan P. N. Exon Smith <
> dexonsmith at apple.com> wrote:
>
>> Author: dexonsmith
>> Date: Fri Oct 31 15:13:11 2014
>> New Revision: 220994
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=220994&view=rev
>> Log:
>> IR: MDNode => Value: Instruction::setMetadata()
>>
>> Change `Instruction::setMetadata()` API to accept `Value` instead of
>> `MDNode`.  Part of PR21433.
>>
>> Modified:
>>     llvm/trunk/include/llvm/IR/IRBuilder.h
>>     llvm/trunk/include/llvm/IR/Instruction.h
>>     llvm/trunk/lib/IR/Metadata.cpp
>>
>> Modified: llvm/trunk/include/llvm/IR/IRBuilder.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/
>> llvm/IR/IRBuilder.h?rev=220994&r1=220993&r2=220994&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/include/llvm/IR/IRBuilder.h (original)
>> +++ llvm/trunk/include/llvm/IR/IRBuilder.h Fri Oct 31 15:13:11 2014
>> @@ -23,12 +23,12 @@
>>  #include "llvm/IR/DataLayout.h"
>>  #include "llvm/IR/Instructions.h"
>>  #include "llvm/IR/LLVMContext.h"
>> +#include "llvm/IR/Metadata.h"
>>  #include "llvm/IR/Operator.h"
>>  #include "llvm/IR/ValueHandle.h"
>>  #include "llvm/Support/CBindingWrapping.h"
>>
>>  namespace llvm {
>> -  class MDNode;
>>
>>  /// \brief This provides the default implementation of the IRBuilder
>>  /// 'InsertHelper' method that is called whenever an instruction is
>> created by
>>
>> Modified: llvm/trunk/include/llvm/IR/Instruction.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/
>> llvm/IR/Instruction.h?rev=220994&r1=220993&r2=220994&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/include/llvm/IR/Instruction.h (original)
>> +++ llvm/trunk/include/llvm/IR/Instruction.h Fri Oct 31 15:13:11 2014
>> @@ -176,9 +176,9 @@ public:
>>
>>    /// setMetadata - Set the metadata of the specified kind to the
>> specified
>>    /// node.  This updates/replaces metadata if already present, or
>> removes it if
>> -  /// Node is null.
>> -  void setMetadata(unsigned KindID, MDNode *Node);
>> -  void setMetadata(StringRef Kind, MDNode *Node);
>> +  /// MD is null.
>> +  void setMetadata(unsigned KindID, Value *MD);
>> +  void setMetadata(StringRef Kind, Value *MD);
>>
>>    /// \brief Drop unknown metadata.
>>    /// Passes are required to drop metadata they don't understand. This
>> is a
>>
>> Modified: llvm/trunk/lib/IR/Metadata.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/
>> Metadata.cpp?rev=220994&r1=220993&r2=220994&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/IR/Metadata.cpp (original)
>> +++ llvm/trunk/lib/IR/Metadata.cpp Fri Oct 31 15:13:11 2014
>> @@ -600,9 +600,9 @@ StringRef NamedMDNode::getName() const {
>>  // Instruction Metadata method implementations.
>>  //
>>
>> -void Instruction::setMetadata(StringRef Kind, MDNode *Node) {
>> -  if (!Node && !hasMetadata()) return;
>> -  setMetadata(getContext().getMDKindID(Kind), Node);
>> +void Instruction::setMetadata(StringRef Kind, Value *MD) {
>> +  if (!MD && !hasMetadata()) return;
>> +  setMetadata(getContext().getMDKindID(Kind), MD);
>>  }
>>
>>  MDNode *Instruction::getMetadataImpl(StringRef Kind) const {
>> @@ -655,9 +655,12 @@ void Instruction::dropUnknownMetadata(Ar
>>
>>  /// setMetadata - Set the metadata of of the specified kind to the
>> specified
>>  /// node.  This updates/replaces metadata if already present, or removes
>> it if
>> -/// Node is null.
>> -void Instruction::setMetadata(unsigned KindID, MDNode *Node) {
>> -  if (!Node && !hasMetadata()) return;
>> +/// MD is null.
>> +void Instruction::setMetadata(unsigned KindID, Value *MD) {
>> +  if (!MD && !hasMetadata()) return;
>> +
>
>
>
>> +  // For now, we only expect MDNodes here.
>> +  MDNode *Node = cast<MDNode>(MD);
>>
>>
> Hrm. Is cast guaranteed to assert?
>

It is:

// cast<X> - Return the argument parameter cast to the specified type.  This
// casting operator asserts that the type is correct, so it does not return
null
// on failure. ...


> If not, could you add one please?
>
> Thanks!
>
> -eric
>
>
>>    // Handle 'dbg' as a special case since it is not stored in the hash
>> table.
>>    if (KindID == LLVMContext::MD_dbg) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141104/33aa7567/attachment.html>


More information about the llvm-commits mailing list