[llvm-commits] [llvm] r93339 - /llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp

Devang Patel devang.patel at gmail.com
Wed Jan 13 13:05:24 PST 2010


On Wed, Jan 13, 2010 at 11:37 AM, Victor Hernandez <vhernandez at apple.com> wrote:

>
> +static void WriteFunctionLocalMetadata(const ValueEnumerator &VE,
> +                                       BitstreamWriter &Stream) {
> +  bool StartedMetadataBlock = false;
> +  SmallVector<uint64_t, 64> Record;
> +  ValueEnumerator::ValueList Vals = VE.getMDValues();
> +  ValueEnumerator::ValueList::iterator it = Vals.begin();
> +  ValueEnumerator::ValueList::iterator end = Vals.end();
> +
> +  while (it != end) {
> +    if (const MDNode *N = dyn_cast<MDNode>((*it).first)) {
> +      if (N->isFunctionLocal()) {
> +        if (!StartedMetadataBlock) {
> +          Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3);
> +          StartedMetadataBlock = true;
> +        }
> +        WriteMDNode(N, VE, Stream, Record);
> +        // Remove function-local MD, since it is used outside of function.

how ?

> +        it = Vals.erase(it);
> +        end = Vals.end();
> +        continue;
> +      }
> +    }
> +    ++it;
> +  }
> +
> +  if (StartedMetadataBlock)
> +    Stream.ExitBlock();
> +}
> +
>  static void WriteMetadataAttachment(const Function &F,
>                                     const ValueEnumerator &VE,
>                                     BitstreamWriter &Stream) {
> @@ -1210,6 +1241,7 @@
>   // Emit names for all the instructions etc.
>   WriteValueSymbolTable(F.getValueSymbolTable(), VE, Stream);
>
> +  WriteFunctionLocalMetadata(VE, Stream);

This does not check function so will it write function local metadata
from one function into another function's block ?

>   WriteMetadataAttachment(F, VE, Stream);
>   VE.purgeFunction();
>   Stream.ExitBlock();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>


-
Devang




More information about the llvm-commits mailing list