[lld] r192311 - Do not process .objtxt file twice.
Shankar Easwaran
shankare at codeaurora.org
Wed Oct 9 11:50:06 PDT 2013
I am planning to change this to getBuffer in the next set of patches.
On 10/9/2013 1:46 PM, Rui Ueyama wrote:
> On Wed, Oct 9, 2013 at 11:40 AM, Shankar Easwaran
> <shankare at codeaurora.org>wrote:
>
>> Hi Ruiu,
>>
>> I am not ok with the interface. Its difficult to handle things if you want
>> to figure out the FileNode type later.
>>
>> I think readFile should be renamed to getBuffer() which just returns the
>> buffer associated with the file (or) an error code.
>>
> That would improve the code quality. I just consolidated the duplicate code
> that you wrote into one place, so I believe it's at least improving. :)
>
>
>> Darwin needs to do that to get the filetype in the Driver to construct the
>> InputGraph nodes properly.
>>
> I didn't change the behavior of the code.
>
>
>> Thanks
>>
>> Shankar Easwaran
>>
>>
>> On 10/9/2013 1:14 PM, Rui Ueyama wrote:
>>
>>> Author: ruiu
>>> Date: Wed Oct 9 13:14:23 2013
>>> New Revision: 192311
>>>
>>> URL: http://llvm.org/viewvc/llvm-**project?rev=192311&view=rev<http://llvm.org/viewvc/llvm-project?rev=192311&view=rev>
>>> Log:
>>> Do not process .objtxt file twice.
>>>
>>> A file with .objtxt extension is parsed in readFile(), but because we did
>>> not
>>> propagate that information to the calling side, calling side would try to
>>> parse
>>> it again. This patch will fix the issue by adding an extra parameter to
>>> readFile().
>>>
>>> Modified:
>>> lld/trunk/include/lld/Driver/**DarwinInputGraph.h
>>> lld/trunk/include/lld/Driver/**GnuLdInputGraph.h
>>> lld/trunk/include/lld/Driver/**InputGraph.h
>>> lld/trunk/include/lld/Driver/**WinLinkInputGraph.h
>>> lld/trunk/lib/Driver/**InputGraph.cpp
>>>
>>> Modified: lld/trunk/include/lld/Driver/**DarwinInputGraph.h
>>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/include/lld/**
>>> Driver/DarwinInputGraph.h?rev=**192311&r1=192310&r2=192311&**view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/DarwinInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- lld/trunk/include/lld/Driver/**DarwinInputGraph.h (original)
>>> +++ lld/trunk/include/lld/Driver/**DarwinInputGraph.h Wed Oct 9
>>> 13:14:23 2013
>>> @@ -42,7 +42,9 @@ public:
>>> /// \brief Parse the input file to lld::File.
>>> llvm::error_code parse(const LinkingContext &ctx, raw_ostream
>>> &diagnostics) {
>>> - if (error_code ec = readFile(ctx, diagnostics))
>>> + // Read the file to _buffer.
>>> + bool isYaml = false;
>>> + if (error_code ec = readFile(ctx, diagnostics, isYaml))
>>> return ec;
>>> (void) (_isWholeArchive);
>>> return llvm::error_code::success();
>>>
>>> Modified: lld/trunk/include/lld/Driver/**GnuLdInputGraph.h
>>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/include/lld/**
>>> Driver/GnuLdInputGraph.h?rev=**192311&r1=192310&r2=192311&**view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/GnuLdInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- lld/trunk/include/lld/Driver/**GnuLdInputGraph.h (original)
>>> +++ lld/trunk/include/lld/Driver/**GnuLdInputGraph.h Wed Oct 9 13:14:23
>>> 2013
>>> @@ -73,8 +73,11 @@ public:
>>> /// \brief Parse the input file to lld::File.
>>> llvm::error_code parse(const LinkingContext &ctx, raw_ostream
>>> &diagnostics) {
>>> // Read the file to _buffer.
>>> - if (error_code ec = readFile(ctx, diagnostics))
>>> + bool isYaml = false;
>>> + if (error_code ec = readFile(ctx, diagnostics, isYaml))
>>> return ec;
>>> + if (isYaml)
>>> + return error_code::success();
>>> // Identify File type
>>> llvm::sys::fs::file_magic FileType =
>>>
>>> Modified: lld/trunk/include/lld/Driver/**InputGraph.h
>>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/include/lld/**
>>> Driver/InputGraph.h?rev=**192311&r1=192310&r2=192311&**view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/InputGraph.h?rev=192311&r1=192310&r2=192311&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- lld/trunk/include/lld/Driver/**InputGraph.h (original)
>>> +++ lld/trunk/include/lld/Driver/**InputGraph.h Wed Oct 9 13:14:23 2013
>>> @@ -309,7 +309,8 @@ public:
>>> protected:
>>> /// \brief Read the file into _buffer.
>>> - error_code readFile(const LinkingContext &ctx, raw_ostream
>>> &diagnostics);
>>> + error_code readFile(const LinkingContext &ctx, raw_ostream
>>> &diagnostics,
>>> + bool &isYaml);
>>> StringRef _path; // The path of the
>>> Input file
>>> InputGraph::FileVectorT _files; // A vector of lld File
>>> objects
>>>
>>> Modified: lld/trunk/include/lld/Driver/**WinLinkInputGraph.h
>>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/include/lld/**
>>> Driver/WinLinkInputGraph.h?**rev=192311&r1=192310&r2=**192311&view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/WinLinkInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- lld/trunk/include/lld/Driver/**WinLinkInputGraph.h (original)
>>> +++ lld/trunk/include/lld/Driver/**WinLinkInputGraph.h Wed Oct 9
>>> 13:14:23 2013
>>> @@ -40,8 +40,11 @@ public:
>>> /// \brief Parse the input file to lld::File.
>>> error_code parse(const LinkingContext &ctx, raw_ostream &diagnostics)
>>> {
>>> // Read the file to _buffer.
>>> - if (error_code ec = readFile(ctx, diagnostics))
>>> + bool isYaml = false;
>>> + if (error_code ec = readFile(ctx, diagnostics, isYaml))
>>> return ec;
>>> + if (isYaml)
>>> + return error_code::success();
>>> llvm::sys::fs::file_magic FileType =
>>> llvm::sys::fs::identify_magic(**_buffer->getBuffer());
>>>
>>> Modified: lld/trunk/lib/Driver/**InputGraph.cpp
>>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/lib/Driver/**
>>> InputGraph.cpp?rev=192311&r1=**192310&r2=192311&view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/InputGraph.cpp?rev=192311&r1=192310&r2=192311&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- lld/trunk/lib/Driver/**InputGraph.cpp (original)
>>> +++ lld/trunk/lib/Driver/**InputGraph.cpp Wed Oct 9 13:14:23 2013
>>> @@ -99,7 +99,8 @@ FileNode::FileNode(StringRef path, int64
>>> /// \brief Read the file into _buffer.
>>> error_code
>>> -FileNode::readFile(const LinkingContext &ctx, raw_ostream &diagnostics) {
>>> +FileNode::readFile(const LinkingContext &ctx, raw_ostream &diagnostics,
>>> + bool &isYaml) {
>>> ErrorOr<StringRef> filePath = getPath(ctx);
>>> if (!filePath &&
>>> error_code(filePath) == llvm::errc::no_such_file_or_**directory)
>>> @@ -119,9 +120,11 @@ FileNode::readFile(const LinkingContext
>>> // YAML file is identified by a .objtxt extension
>>> // FIXME : Identify YAML files by using a magic
>>> - if (filePath->endswith(".objtxt")**)
>>> + if (filePath->endswith(".objtxt")**) {
>>> if (error_code ec = ctx.getYAMLReader().parseFile(**_buffer,
>>> _files))
>>> return ec;
>>> + isYaml = true;
>>> + }
>>> return error_code::success();
>>> }
>>>
>>>
>>> ______________________________**_________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/**mailman/listinfo/llvm-commits<http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>>>
>>>
>>>
>> --
>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
>> by the Linux Foundation
>>
>>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
More information about the llvm-commits
mailing list