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:
Stuart Hastings 2011-03-19 02:33:56 +00:00
parent d847f4702a
commit 825dd96918
4 changed files with 9 additions and 13 deletions

View File

@ -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,

View File

@ -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.

View File

@ -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());

View File

@ -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()) {