mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 22:24:07 +00:00
Code Custodian:
- Widespread trailing space removal - A dash of OCD spacing to block align enums - joined a line that probably needed 80 cols a while back git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168566 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -30,7 +30,7 @@ LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef,
|
||||
LLVMModuleRef *OutModule,
|
||||
char **OutMessage) {
|
||||
std::string Message;
|
||||
|
||||
|
||||
*OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), *unwrap(ContextRef),
|
||||
&Message));
|
||||
if (!*OutModule) {
|
||||
@ -38,19 +38,19 @@ LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef,
|
||||
*OutMessage = strdup(Message.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Reads a module from the specified path, returning via the OutModule parameter
|
||||
a module provider which performs lazy deserialization. Returns 0 on success.
|
||||
Optionally returns a human-readable error message via OutMessage. */
|
||||
Optionally returns a human-readable error message via OutMessage. */
|
||||
LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef,
|
||||
LLVMMemoryBufferRef MemBuf,
|
||||
LLVMModuleRef *OutM,
|
||||
char **OutMessage) {
|
||||
std::string Message;
|
||||
|
||||
|
||||
*OutM = wrap(getLazyBitcodeModule(unwrap(MemBuf), *unwrap(ContextRef),
|
||||
&Message));
|
||||
if (!*OutM) {
|
||||
@ -58,7 +58,7 @@ LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef,
|
||||
*OutMessage = strdup(Message.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
@ -1194,7 +1194,7 @@ bool BitcodeReader::ParseConstants() {
|
||||
dyn_cast_or_null<VectorType>(getTypeByID(Record[0]));
|
||||
if (OpTy == 0) return Error("Invalid CE_EXTRACTELT record");
|
||||
Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy);
|
||||
Constant *Op1 = ValueList.getConstantFwdRef(Record[2],
|
||||
Constant *Op1 = ValueList.getConstantFwdRef(Record[2],
|
||||
Type::getInt32Ty(Context));
|
||||
V = ConstantExpr::getExtractElement(Op0, Op1);
|
||||
break;
|
||||
@ -1206,7 +1206,7 @@ bool BitcodeReader::ParseConstants() {
|
||||
Constant *Op0 = ValueList.getConstantFwdRef(Record[0], OpTy);
|
||||
Constant *Op1 = ValueList.getConstantFwdRef(Record[1],
|
||||
OpTy->getElementType());
|
||||
Constant *Op2 = ValueList.getConstantFwdRef(Record[2],
|
||||
Constant *Op2 = ValueList.getConstantFwdRef(Record[2],
|
||||
Type::getInt32Ty(Context));
|
||||
V = ConstantExpr::getInsertElement(Op0, Op1, Op2);
|
||||
break;
|
||||
|
@ -27,14 +27,14 @@
|
||||
namespace llvm {
|
||||
class MemoryBuffer;
|
||||
class LLVMContext;
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// BitcodeReaderValueList Class
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class BitcodeReaderValueList {
|
||||
std::vector<WeakVH> ValuePtrs;
|
||||
|
||||
|
||||
/// ResolveConstants - As we resolve forward-referenced constants, we add
|
||||
/// information about them to this vector. This allows us to resolve them in
|
||||
/// bulk instead of resolving each reference at a time. See the code in
|
||||
@ -57,17 +57,17 @@ public:
|
||||
void push_back(Value *V) {
|
||||
ValuePtrs.push_back(V);
|
||||
}
|
||||
|
||||
|
||||
void clear() {
|
||||
assert(ResolveConstants.empty() && "Constants not resolved?");
|
||||
ValuePtrs.clear();
|
||||
}
|
||||
|
||||
|
||||
Value *operator[](unsigned i) const {
|
||||
assert(i < ValuePtrs.size());
|
||||
return ValuePtrs[i];
|
||||
}
|
||||
|
||||
|
||||
Value *back() const { return ValuePtrs.back(); }
|
||||
void pop_back() { ValuePtrs.pop_back(); }
|
||||
bool empty() const { return ValuePtrs.empty(); }
|
||||
@ -75,12 +75,12 @@ public:
|
||||
assert(N <= size() && "Invalid shrinkTo request!");
|
||||
ValuePtrs.resize(N);
|
||||
}
|
||||
|
||||
|
||||
Constant *getConstantFwdRef(unsigned Idx, Type *Ty);
|
||||
Value *getValueFwdRef(unsigned Idx, Type *Ty);
|
||||
|
||||
|
||||
void AssignValue(Value *V, unsigned Idx);
|
||||
|
||||
|
||||
/// ResolveConstantForwardRefs - Once all constants are read, this method bulk
|
||||
/// resolves any forward references.
|
||||
void ResolveConstantForwardRefs();
|
||||
@ -93,7 +93,7 @@ public:
|
||||
|
||||
class BitcodeReaderMDValueList {
|
||||
std::vector<WeakVH> MDValuePtrs;
|
||||
|
||||
|
||||
LLVMContext &Context;
|
||||
public:
|
||||
BitcodeReaderMDValueList(LLVMContext& C) : Context(C) {}
|
||||
@ -106,12 +106,12 @@ public:
|
||||
Value *back() const { return MDValuePtrs.back(); }
|
||||
void pop_back() { MDValuePtrs.pop_back(); }
|
||||
bool empty() const { return MDValuePtrs.empty(); }
|
||||
|
||||
|
||||
Value *operator[](unsigned i) const {
|
||||
assert(i < MDValuePtrs.size());
|
||||
return MDValuePtrs[i];
|
||||
}
|
||||
|
||||
|
||||
void shrinkTo(unsigned N) {
|
||||
assert(N <= size() && "Invalid shrinkTo request!");
|
||||
MDValuePtrs.resize(N);
|
||||
@ -131,9 +131,9 @@ class BitcodeReader : public GVMaterializer {
|
||||
DataStreamer *LazyStreamer;
|
||||
uint64_t NextUnreadBit;
|
||||
bool SeenValueSymbolTable;
|
||||
|
||||
|
||||
const char *ErrorString;
|
||||
|
||||
|
||||
std::vector<Type*> TypeList;
|
||||
BitcodeReaderValueList ValueList;
|
||||
BitcodeReaderMDValueList MDValueList;
|
||||
@ -142,38 +142,38 @@ class BitcodeReader : public GVMaterializer {
|
||||
|
||||
std::vector<std::pair<GlobalVariable*, unsigned> > GlobalInits;
|
||||
std::vector<std::pair<GlobalAlias*, unsigned> > AliasInits;
|
||||
|
||||
|
||||
/// MAttributes - The set of attributes by index. Index zero in the
|
||||
/// file is for null, and is thus not represented here. As such all indices
|
||||
/// are off by one.
|
||||
std::vector<AttrListPtr> MAttributes;
|
||||
|
||||
|
||||
/// FunctionBBs - While parsing a function body, this is a list of the basic
|
||||
/// blocks for the function.
|
||||
std::vector<BasicBlock*> FunctionBBs;
|
||||
|
||||
|
||||
// When reading the module header, this list is populated with functions that
|
||||
// have bodies later in the file.
|
||||
std::vector<Function*> FunctionsWithBodies;
|
||||
|
||||
// When intrinsic functions are encountered which require upgrading they are
|
||||
// When intrinsic functions are encountered which require upgrading they are
|
||||
// stored here with their replacement function.
|
||||
typedef std::vector<std::pair<Function*, Function*> > UpgradedIntrinsicMap;
|
||||
UpgradedIntrinsicMap UpgradedIntrinsics;
|
||||
|
||||
// Map the bitcode's custom MDKind ID to the Module's MDKind ID.
|
||||
DenseMap<unsigned, unsigned> MDKindMap;
|
||||
|
||||
|
||||
// Several operations happen after the module header has been read, but
|
||||
// before function bodies are processed. This keeps track of whether
|
||||
// we've done this yet.
|
||||
bool SeenFirstFunctionBody;
|
||||
|
||||
|
||||
/// DeferredFunctionInfo - When function bodies are initially scanned, this
|
||||
/// map contains info about where to find deferred function body in the
|
||||
/// stream.
|
||||
DenseMap<Function*, uint64_t> DeferredFunctionInfo;
|
||||
|
||||
|
||||
/// BlockAddrFwdRefs - These are blockaddr references to basic blocks. These
|
||||
/// are resolved lazily when functions are loaded.
|
||||
typedef std::pair<unsigned, GlobalVariable*> BlockAddrRefTy;
|
||||
@ -208,11 +208,11 @@ public:
|
||||
void materializeForwardReferencedFunctions();
|
||||
|
||||
void FreeState();
|
||||
|
||||
|
||||
/// setBufferOwned - If this is true, the reader will destroy the MemoryBuffer
|
||||
/// when the reader is destroyed.
|
||||
void setBufferOwned(bool Owned) { BufferOwned = Owned; }
|
||||
|
||||
|
||||
virtual bool isMaterializable(const GlobalValue *GV) const;
|
||||
virtual bool isDematerializable(const GlobalValue *GV) const;
|
||||
virtual bool Materialize(GlobalValue *GV, std::string *ErrInfo = 0);
|
||||
@ -224,7 +224,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
const char *getErrorString() const { return ErrorString; }
|
||||
|
||||
|
||||
/// @brief Main interface to parsing a bitcode buffer.
|
||||
/// @returns true if an error occurred.
|
||||
bool ParseBitcodeInto(Module *M);
|
||||
@ -251,7 +251,7 @@ private:
|
||||
return MAttributes[i-1];
|
||||
return AttrListPtr();
|
||||
}
|
||||
|
||||
|
||||
/// getValueTypePair - Read a value/type pair out of the specified record from
|
||||
/// slot 'Slot'. Increment Slot past the number of slots used in the record.
|
||||
/// Return true on failure.
|
||||
@ -339,7 +339,7 @@ private:
|
||||
bool FindFunctionInStream(Function *F,
|
||||
DenseMap<Function*, uint64_t>::iterator DeferredFunctionInfoIterator);
|
||||
};
|
||||
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
@ -17,12 +17,11 @@ using namespace llvm;
|
||||
|
||||
int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
|
||||
std::string ErrorInfo;
|
||||
raw_fd_ostream OS(Path, ErrorInfo,
|
||||
raw_fd_ostream::F_Binary);
|
||||
|
||||
raw_fd_ostream OS(Path, ErrorInfo, raw_fd_ostream::F_Binary);
|
||||
|
||||
if (!ErrorInfo.empty())
|
||||
return -1;
|
||||
|
||||
|
||||
WriteBitcodeToFile(unwrap(M), OS);
|
||||
return 0;
|
||||
}
|
||||
@ -30,7 +29,7 @@ int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
|
||||
int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,
|
||||
int Unbuffered) {
|
||||
raw_fd_ostream OS(FD, ShouldClose, Unbuffered);
|
||||
|
||||
|
||||
WriteBitcodeToFile(unwrap(M), OS);
|
||||
return 0;
|
||||
}
|
||||
|
@ -256,16 +256,16 @@ static void WriteTypeTable(const ValueEnumerator &VE, BitstreamWriter &Stream) {
|
||||
|
||||
switch (T->getTypeID()) {
|
||||
default: llvm_unreachable("Unknown type!");
|
||||
case Type::VoidTyID: Code = bitc::TYPE_CODE_VOID; break;
|
||||
case Type::HalfTyID: Code = bitc::TYPE_CODE_HALF; break;
|
||||
case Type::FloatTyID: Code = bitc::TYPE_CODE_FLOAT; break;
|
||||
case Type::DoubleTyID: Code = bitc::TYPE_CODE_DOUBLE; break;
|
||||
case Type::X86_FP80TyID: Code = bitc::TYPE_CODE_X86_FP80; break;
|
||||
case Type::FP128TyID: Code = bitc::TYPE_CODE_FP128; break;
|
||||
case Type::VoidTyID: Code = bitc::TYPE_CODE_VOID; break;
|
||||
case Type::HalfTyID: Code = bitc::TYPE_CODE_HALF; break;
|
||||
case Type::FloatTyID: Code = bitc::TYPE_CODE_FLOAT; break;
|
||||
case Type::DoubleTyID: Code = bitc::TYPE_CODE_DOUBLE; break;
|
||||
case Type::X86_FP80TyID: Code = bitc::TYPE_CODE_X86_FP80; break;
|
||||
case Type::FP128TyID: Code = bitc::TYPE_CODE_FP128; break;
|
||||
case Type::PPC_FP128TyID: Code = bitc::TYPE_CODE_PPC_FP128; break;
|
||||
case Type::LabelTyID: Code = bitc::TYPE_CODE_LABEL; break;
|
||||
case Type::MetadataTyID: Code = bitc::TYPE_CODE_METADATA; break;
|
||||
case Type::X86_MMXTyID: Code = bitc::TYPE_CODE_X86_MMX; break;
|
||||
case Type::LabelTyID: Code = bitc::TYPE_CODE_LABEL; break;
|
||||
case Type::MetadataTyID: Code = bitc::TYPE_CODE_METADATA; break;
|
||||
case Type::X86_MMXTyID: Code = bitc::TYPE_CODE_X86_MMX; break;
|
||||
case Type::IntegerTyID:
|
||||
// INTEGER: [width]
|
||||
Code = bitc::TYPE_CODE_INTEGER;
|
||||
|
@ -22,9 +22,9 @@ namespace {
|
||||
static char ID; // Pass identification, replacement for typeid
|
||||
explicit WriteBitcodePass(raw_ostream &o)
|
||||
: ModulePass(ID), OS(o) {}
|
||||
|
||||
|
||||
const char *getPassName() const { return "Bitcode Writer"; }
|
||||
|
||||
|
||||
bool runOnModule(Module &M) {
|
||||
WriteBitcodeToFile(&M, OS);
|
||||
return false;
|
||||
|
@ -95,7 +95,7 @@ ValueEnumerator::ValueEnumerator(const Module *M) {
|
||||
I->getAllMetadataOtherThanDebugLoc(MDs);
|
||||
for (unsigned i = 0, e = MDs.size(); i != e; ++i)
|
||||
EnumerateMetadata(MDs[i].second);
|
||||
|
||||
|
||||
if (!I->getDebugLoc().isUnknown()) {
|
||||
MDNode *Scope, *IA;
|
||||
I->getDebugLoc().getScopeAndInlinedAt(Scope, IA, I->getContext());
|
||||
@ -363,16 +363,16 @@ void ValueEnumerator::EnumerateType(Type *Ty) {
|
||||
if (StructType *STy = dyn_cast<StructType>(Ty))
|
||||
if (!STy->isLiteral())
|
||||
*TypeID = ~0U;
|
||||
|
||||
|
||||
// Enumerate all of the subtypes before we enumerate this type. This ensures
|
||||
// that the type will be enumerated in an order that can be directly built.
|
||||
for (Type::subtype_iterator I = Ty->subtype_begin(), E = Ty->subtype_end();
|
||||
I != E; ++I)
|
||||
EnumerateType(*I);
|
||||
|
||||
|
||||
// Refresh the TypeID pointer in case the table rehashed.
|
||||
TypeID = &TypeMap[Ty];
|
||||
|
||||
|
||||
// Check to see if we got the pointer another way. This can happen when
|
||||
// enumerating recursive types that hit the base case deeper than they start.
|
||||
//
|
||||
@ -380,10 +380,10 @@ void ValueEnumerator::EnumerateType(Type *Ty) {
|
||||
// then emit the definition now that all of its contents are available.
|
||||
if (*TypeID && *TypeID != ~0U)
|
||||
return;
|
||||
|
||||
|
||||
// Add this type now that its contents are all happily enumerated.
|
||||
Types.push_back(Ty);
|
||||
|
||||
|
||||
*TypeID = Types.size();
|
||||
}
|
||||
|
||||
@ -391,7 +391,7 @@ void ValueEnumerator::EnumerateType(Type *Ty) {
|
||||
// walk through it, enumerating the types of the constant.
|
||||
void ValueEnumerator::EnumerateOperandType(const Value *V) {
|
||||
EnumerateType(V->getType());
|
||||
|
||||
|
||||
if (const Constant *C = dyn_cast<Constant>(V)) {
|
||||
// If this constant is already enumerated, ignore it, we know its type must
|
||||
// be enumerated.
|
||||
@ -401,11 +401,11 @@ void ValueEnumerator::EnumerateOperandType(const Value *V) {
|
||||
// them.
|
||||
for (unsigned i = 0, e = C->getNumOperands(); i != e; ++i) {
|
||||
const Value *Op = C->getOperand(i);
|
||||
|
||||
|
||||
// Don't enumerate basic blocks here, this happens as operands to
|
||||
// blockaddress.
|
||||
if (isa<BasicBlock>(Op)) continue;
|
||||
|
||||
|
||||
EnumerateOperandType(Op);
|
||||
}
|
||||
|
||||
@ -482,7 +482,7 @@ void ValueEnumerator::incorporateFunction(const Function &F) {
|
||||
if (N->isFunctionLocal() && N->getFunction())
|
||||
FnLocalMDVector.push_back(N);
|
||||
}
|
||||
|
||||
|
||||
if (!I->getType()->isVoidTy())
|
||||
EnumerateValue(I);
|
||||
}
|
||||
|
@ -51,15 +51,15 @@ private:
|
||||
ValueList MDValues;
|
||||
SmallVector<const MDNode *, 8> FunctionLocalMDs;
|
||||
ValueMapType MDValueMap;
|
||||
|
||||
|
||||
typedef DenseMap<void*, unsigned> AttributeMapType;
|
||||
AttributeMapType AttributeMap;
|
||||
std::vector<AttrListPtr> Attributes;
|
||||
|
||||
|
||||
/// GlobalBasicBlockIDs - This map memoizes the basic block ID's referenced by
|
||||
/// the "getGlobalBasicBlockID" method.
|
||||
mutable DenseMap<const BasicBlock*, unsigned> GlobalBasicBlockIDs;
|
||||
|
||||
|
||||
typedef DenseMap<const Instruction*, unsigned> InstructionMapType;
|
||||
InstructionMapType InstructionMap;
|
||||
unsigned InstructionCount;
|
||||
@ -67,7 +67,7 @@ private:
|
||||
/// BasicBlocks - This contains all the basic blocks for the currently
|
||||
/// incorporated function. Their reverse mapping is stored in ValueMap.
|
||||
std::vector<const BasicBlock*> BasicBlocks;
|
||||
|
||||
|
||||
/// When a function is incorporated, this is the size of the Values list
|
||||
/// before incorporation.
|
||||
unsigned NumModuleValues;
|
||||
@ -111,20 +111,20 @@ public:
|
||||
Start = FirstFuncConstantID;
|
||||
End = FirstInstID;
|
||||
}
|
||||
|
||||
|
||||
const ValueList &getValues() const { return Values; }
|
||||
const ValueList &getMDValues() const { return MDValues; }
|
||||
const SmallVector<const MDNode *, 8> &getFunctionLocalMDValues() const {
|
||||
const SmallVector<const MDNode *, 8> &getFunctionLocalMDValues() const {
|
||||
return FunctionLocalMDs;
|
||||
}
|
||||
const TypeList &getTypes() const { return Types; }
|
||||
const std::vector<const BasicBlock*> &getBasicBlocks() const {
|
||||
return BasicBlocks;
|
||||
return BasicBlocks;
|
||||
}
|
||||
const std::vector<AttrListPtr> &getAttributes() const {
|
||||
return Attributes;
|
||||
}
|
||||
|
||||
|
||||
/// getGlobalBasicBlockID - This returns the function-specific ID for the
|
||||
/// specified basic block. This is relatively expensive information, so it
|
||||
/// should only be used by rare constructs such as address-of-label.
|
||||
@ -138,7 +138,7 @@ public:
|
||||
|
||||
private:
|
||||
void OptimizeConstants(unsigned CstStart, unsigned CstEnd);
|
||||
|
||||
|
||||
void EnumerateMDNodeOperands(const MDNode *N);
|
||||
void EnumerateMetadata(const Value *MD);
|
||||
void EnumerateFunctionLocalMetadata(const MDNode *N);
|
||||
@ -147,7 +147,7 @@ private:
|
||||
void EnumerateType(Type *T);
|
||||
void EnumerateOperandType(const Value *V);
|
||||
void EnumerateAttributes(const AttrListPtr &PAL);
|
||||
|
||||
|
||||
void EnumerateValueSymbolTable(const ValueSymbolTable &ST);
|
||||
void EnumerateNamedMetadata(const Module *M);
|
||||
};
|
||||
|
Reference in New Issue
Block a user