[llvm] r212356 - Revert "Convert a few std::strings to StringRef."
Rafael Espindola
rafael.espindola at gmail.com
Fri Jul 4 13:02:43 PDT 2014
Author: rafael
Date: Fri Jul 4 15:02:42 2014
New Revision: 212356
URL: http://llvm.org/viewvc/llvm-project?rev=212356&view=rev
Log:
Revert "Convert a few std::strings to StringRef."
This reverts commit r212342.
We can get a StringRef into the current Record, but not one in the bitcode
itself since the string is compressed in it.
Modified:
llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
llvm/trunk/lib/Bitcode/Reader/BitcodeReader.h
llvm/trunk/lib/LTO/LTOModule.cpp
Modified: llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/ReaderWriter.h?rev=212356&r1=212355&r2=212356&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Bitcode/ReaderWriter.h (original)
+++ llvm/trunk/include/llvm/Bitcode/ReaderWriter.h Fri Jul 4 15:02:42 2014
@@ -14,7 +14,6 @@
#ifndef LLVM_BITCODE_READERWRITER_H
#define LLVM_BITCODE_READERWRITER_H
-#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ErrorOr.h"
#include <string>
@@ -45,7 +44,8 @@ namespace llvm {
/// Read the header of the specified bitcode buffer and extract just the
/// triple information. If successful, this returns a string and *does not*
/// take ownership of 'buffer'. On error, this returns "".
- StringRef getBitcodeTargetTriple(MemoryBuffer *Buffer, LLVMContext &Context);
+ std::string getBitcodeTargetTriple(MemoryBuffer *Buffer,
+ LLVMContext &Context);
/// Read the specified bitcode file, returning the module.
/// This method *never* takes ownership of Buffer.
Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=212356&r1=212355&r2=212356&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Fri Jul 4 15:02:42 2014
@@ -71,15 +71,6 @@ static bool ConvertToString(ArrayRef<uin
return false;
}
-ErrorOr<StringRef> BitcodeReader::convertToStringRef(ArrayRef<uint64_t> Record,
- unsigned Idx) {
- if (Idx > Record.size())
- return Error(InvalidRecord);
-
- return StringRef((char*)&Record[Idx], Record.size() - Idx);
-}
-
-
static GlobalValue::LinkageTypes GetDecodedLinkage(unsigned Val) {
switch (Val) {
default: // Map unknown/new linkages to external
@@ -2125,13 +2116,13 @@ std::error_code BitcodeReader::ParseBitc
}
}
-ErrorOr<StringRef> BitcodeReader::parseModuleTriple() {
+ErrorOr<std::string> BitcodeReader::parseModuleTriple() {
if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID))
return Error(InvalidRecord);
SmallVector<uint64_t, 64> Record;
- StringRef Triple;
+ std::string Triple;
// Read all the records for this module.
while (1) {
BitstreamEntry Entry = Stream.advanceSkippingSubblocks();
@@ -2151,10 +2142,10 @@ ErrorOr<StringRef> BitcodeReader::parseM
switch (Stream.readRecord(Entry.ID, Record)) {
default: break; // Default behavior, ignore unknown content.
case bitc::MODULE_CODE_TRIPLE: { // TRIPLE: [strchr x N]
- ErrorOr<StringRef> S = convertToStringRef(Record, 0);
- if (std::error_code EC = S.getError())
- return EC;
- Triple = S.get();
+ std::string S;
+ if (ConvertToString(Record, 0, S))
+ return Error(InvalidRecord);
+ Triple = S;
break;
}
}
@@ -2163,7 +2154,7 @@ ErrorOr<StringRef> BitcodeReader::parseM
return Triple;
}
-ErrorOr<StringRef> BitcodeReader::parseTriple() {
+ErrorOr<std::string> BitcodeReader::parseTriple() {
if (std::error_code EC = InitStream())
return EC;
@@ -3478,10 +3469,10 @@ ErrorOr<Module *> llvm::parseBitcodeFile
return M;
}
-StringRef llvm::getBitcodeTargetTriple(MemoryBuffer *Buffer,
- LLVMContext &Context) {
+std::string llvm::getBitcodeTargetTriple(MemoryBuffer *Buffer,
+ LLVMContext &Context) {
BitcodeReader *R = new BitcodeReader(Buffer, Context);
- ErrorOr<StringRef> Triple = R->parseTriple();
+ ErrorOr<std::string> Triple = R->parseTriple();
R->releaseBuffer();
delete R;
if (Triple.getError())
Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.h?rev=212356&r1=212355&r2=212356&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.h (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.h Fri Jul 4 15:02:42 2014
@@ -196,9 +196,6 @@ class BitcodeReader : public GVMateriali
static const std::error_category &BitcodeErrorCategory();
- static ErrorOr<StringRef> convertToStringRef(ArrayRef<uint64_t> Record,
- unsigned Idx);
-
public:
enum ErrorType {
BitcodeStreamInvalidSize,
@@ -223,7 +220,7 @@ public:
InvalidValue // Invalid version, inst number, attr number, etc
};
- static std::error_code Error(ErrorType E) {
+ std::error_code Error(ErrorType E) {
return std::error_code(E, BitcodeErrorCategory());
}
@@ -255,7 +252,7 @@ public:
/// @brief Cheap mechanism to just extract module triple
/// @returns true if an error occurred.
- ErrorOr<StringRef> parseTriple();
+ ErrorOr<std::string> parseTriple();
static uint64_t decodeSignRotatedValue(uint64_t V);
@@ -357,7 +354,7 @@ private:
std::error_code ResolveGlobalAndAliasInits();
std::error_code ParseMetadata();
std::error_code ParseMetadataAttachment();
- ErrorOr<StringRef> parseModuleTriple();
+ ErrorOr<std::string> parseModuleTriple();
std::error_code ParseUseLists();
std::error_code InitStream();
std::error_code InitStreamFromBuffer();
Modified: llvm/trunk/lib/LTO/LTOModule.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOModule.cpp?rev=212356&r1=212355&r2=212356&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOModule.cpp (original)
+++ llvm/trunk/lib/LTO/LTOModule.cpp Fri Jul 4 15:02:42 2014
@@ -63,8 +63,8 @@ bool LTOModule::isBitcodeFile(const char
bool LTOModule::isBitcodeForTarget(MemoryBuffer *buffer,
StringRef triplePrefix) {
- StringRef Triple = getBitcodeTargetTriple(buffer, getGlobalContext());
- return Triple.startswith(triplePrefix);
+ std::string Triple = getBitcodeTargetTriple(buffer, getGlobalContext());
+ return StringRef(Triple).startswith(triplePrefix);
}
LTOModule *LTOModule::createFromFile(const char *path, TargetOptions options,
More information about the llvm-commits
mailing list