mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-12 01:25:49 +00:00
Revert 127939. <rdar://problem/9012638>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127943 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -157,12 +157,10 @@ public:
|
|||||||
/// flavored .s file. If successful, this fills in the specified Out
|
/// flavored .s file. If successful, this fills in the specified Out
|
||||||
/// parameters and returns an empty string. When an invalid section
|
/// parameters and returns an empty string. When an invalid section
|
||||||
/// specifier is present, this returns a string indicating the problem.
|
/// specifier is present, this returns a string indicating the problem.
|
||||||
/// If no TAA was parsed, TAA is not altered, and TAAWasSet becomes false.
|
|
||||||
static std::string ParseSectionSpecifier(StringRef Spec, // In.
|
static std::string ParseSectionSpecifier(StringRef Spec, // In.
|
||||||
StringRef &Segment, // Out.
|
StringRef &Segment, // Out.
|
||||||
StringRef &Section, // Out.
|
StringRef &Section, // Out.
|
||||||
unsigned &TAA, // Out.
|
unsigned &TAA, // Out.
|
||||||
bool &TAAParsed, // Out.
|
|
||||||
unsigned &StubSize); // Out.
|
unsigned &StubSize); // Out.
|
||||||
|
|
||||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||||
|
@@ -641,11 +641,10 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
|
|||||||
Mangler *Mang, const TargetMachine &TM) const {
|
Mangler *Mang, const TargetMachine &TM) const {
|
||||||
// Parse the section specifier and create it if valid.
|
// Parse the section specifier and create it if valid.
|
||||||
StringRef Segment, Section;
|
StringRef Segment, Section;
|
||||||
unsigned TAA = 0, StubSize = 0;
|
unsigned TAA = (unsigned)MCSectionMachO::SECTION_ATTRIBUTES, StubSize = 0;
|
||||||
bool TAAParsed;
|
|
||||||
std::string ErrorCode =
|
std::string ErrorCode =
|
||||||
MCSectionMachO::ParseSectionSpecifier(GV->getSection(), Segment, Section,
|
MCSectionMachO::ParseSectionSpecifier(GV->getSection(), Segment, Section,
|
||||||
TAA, TAAParsed, StubSize);
|
TAA, StubSize);
|
||||||
if (!ErrorCode.empty()) {
|
if (!ErrorCode.empty()) {
|
||||||
// If invalid, report the error with report_fatal_error.
|
// If invalid, report the error with report_fatal_error.
|
||||||
report_fatal_error("Global variable '" + GV->getNameStr() +
|
report_fatal_error("Global variable '" + GV->getNameStr() +
|
||||||
@@ -655,13 +654,17 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
|
|||||||
return DataSection;
|
return DataSection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TAAWasSet = (TAA != MCSectionMachO::SECTION_ATTRIBUTES);
|
||||||
|
if (!TAAWasSet)
|
||||||
|
TAA = 0; // Sensible default if this is a new section.
|
||||||
|
|
||||||
// Get the section.
|
// Get the section.
|
||||||
const MCSectionMachO *S =
|
const MCSectionMachO *S =
|
||||||
getContext().getMachOSection(Segment, Section, TAA, StubSize, Kind);
|
getContext().getMachOSection(Segment, Section, TAA, StubSize, Kind);
|
||||||
|
|
||||||
// If TAA wasn't set by ParseSectionSpecifier() above,
|
// If TAA wasn't set by ParseSectionSpecifier() above,
|
||||||
// use the value returned by getMachOSection() as a default.
|
// use the value returned by getMachOSection() as a default.
|
||||||
if (!TAAParsed)
|
if (!TAAWasSet)
|
||||||
TAA = S->getTypeAndAttributes();
|
TAA = S->getTypeAndAttributes();
|
||||||
|
|
||||||
// Okay, now that we got the section, verify that the TAA & StubSize agree.
|
// Okay, now that we got the section, verify that the TAA & StubSize agree.
|
||||||
|
@@ -435,11 +435,10 @@ bool DarwinAsmParser::ParseDirectiveSection(StringRef, SMLoc) {
|
|||||||
|
|
||||||
StringRef Segment, Section;
|
StringRef Segment, Section;
|
||||||
unsigned StubSize;
|
unsigned StubSize;
|
||||||
unsigned TAA;
|
unsigned TAA = 0;
|
||||||
bool TAAParsed;
|
|
||||||
std::string ErrorStr =
|
std::string ErrorStr =
|
||||||
MCSectionMachO::ParseSectionSpecifier(SectionSpec, Segment, Section,
|
MCSectionMachO::ParseSectionSpecifier(SectionSpec, Segment, Section,
|
||||||
TAA, TAAParsed, StubSize);
|
TAA, StubSize);
|
||||||
|
|
||||||
if (!ErrorStr.empty())
|
if (!ErrorStr.empty())
|
||||||
return Error(Loc, ErrorStr.c_str());
|
return Error(Loc, ErrorStr.c_str());
|
||||||
|
@@ -180,9 +180,7 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
|
|||||||
StringRef &Segment, // Out.
|
StringRef &Segment, // Out.
|
||||||
StringRef &Section, // Out.
|
StringRef &Section, // Out.
|
||||||
unsigned &TAA, // Out.
|
unsigned &TAA, // Out.
|
||||||
bool &TAAParsed, // Out.
|
|
||||||
unsigned &StubSize) { // Out.
|
unsigned &StubSize) { // Out.
|
||||||
TAAParsed = false;
|
|
||||||
// Find the first comma.
|
// Find the first comma.
|
||||||
std::pair<StringRef, StringRef> Comma = Spec.split(',');
|
std::pair<StringRef, StringRef> Comma = Spec.split(',');
|
||||||
|
|
||||||
@@ -213,7 +211,6 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
|
|||||||
"between 1 and 16 characters";
|
"between 1 and 16 characters";
|
||||||
|
|
||||||
// If there is no comma after the section, we're done.
|
// If there is no comma after the section, we're done.
|
||||||
TAA = 0;
|
|
||||||
StubSize = 0;
|
StubSize = 0;
|
||||||
if (Comma.second.empty())
|
if (Comma.second.empty())
|
||||||
return "";
|
return "";
|
||||||
@@ -238,7 +235,6 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
|
|||||||
|
|
||||||
// Remember the TypeID.
|
// Remember the TypeID.
|
||||||
TAA = TypeID;
|
TAA = TypeID;
|
||||||
TAAParsed = true;
|
|
||||||
|
|
||||||
// If we have no comma after the section type, there are no attributes.
|
// If we have no comma after the section type, there are no attributes.
|
||||||
if (Comma.second.empty()) {
|
if (Comma.second.empty()) {
|
||||||
|
Reference in New Issue
Block a user