[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