summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2011-03-19 02:33:56 +0000
committerStuart Hastings <stuart@apple.com>2011-03-19 02:33:56 +0000
commit825dd969189357cf0e7084e015d938467b0136eb (patch)
tree9c5cfda70bfcd114d839147aa893eef3f329099f /lib
parentd847f4702aa5d577eba3199be92574ccea109f74 (diff)
downloadllvm-825dd969189357cf0e7084e015d938467b0136eb.tar.gz
llvm-825dd969189357cf0e7084e015d938467b0136eb.tar.bz2
llvm-825dd969189357cf0e7084e015d938467b0136eb.tar.xz
Revert 127939. <rdar://problem/9012638>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127943 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/TargetLoweringObjectFileImpl.cpp11
-rw-r--r--lib/MC/MCParser/DarwinAsmParser.cpp5
-rw-r--r--lib/MC/MCSectionMachO.cpp4
3 files changed, 9 insertions, 11 deletions
diff --git a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index f332d12bc7..fa311dc5d6 100644
--- a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -641,11 +641,10 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const {
// Parse the section specifier and create it if valid.
StringRef Segment, Section;
- unsigned TAA = 0, StubSize = 0;
- bool TAAParsed;
+ unsigned TAA = (unsigned)MCSectionMachO::SECTION_ATTRIBUTES, StubSize = 0;
std::string ErrorCode =
MCSectionMachO::ParseSectionSpecifier(GV->getSection(), Segment, Section,
- TAA, TAAParsed, StubSize);
+ TAA, StubSize);
if (!ErrorCode.empty()) {
// If invalid, report the error with report_fatal_error.
report_fatal_error("Global variable '" + GV->getNameStr() +
@@ -655,13 +654,17 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
return DataSection;
}
+ bool TAAWasSet = (TAA != MCSectionMachO::SECTION_ATTRIBUTES);
+ if (!TAAWasSet)
+ TAA = 0; // Sensible default if this is a new section.
+
// Get the section.
const MCSectionMachO *S =
getContext().getMachOSection(Segment, Section, TAA, StubSize, Kind);
// If TAA wasn't set by ParseSectionSpecifier() above,
// use the value returned by getMachOSection() as a default.
- if (!TAAParsed)
+ if (!TAAWasSet)
TAA = S->getTypeAndAttributes();
// Okay, now that we got the section, verify that the TAA & StubSize agree.
diff --git a/lib/MC/MCParser/DarwinAsmParser.cpp b/lib/MC/MCParser/DarwinAsmParser.cpp
index 3c092cdb19..f01f866846 100644
--- a/lib/MC/MCParser/DarwinAsmParser.cpp
+++ b/lib/MC/MCParser/DarwinAsmParser.cpp
@@ -435,11 +435,10 @@ bool DarwinAsmParser::ParseDirectiveSection(StringRef, SMLoc) {
StringRef Segment, Section;
unsigned StubSize;
- unsigned TAA;
- bool TAAParsed;
+ unsigned TAA = 0;
std::string ErrorStr =
MCSectionMachO::ParseSectionSpecifier(SectionSpec, Segment, Section,
- TAA, TAAParsed, StubSize);
+ TAA, StubSize);
if (!ErrorStr.empty())
return Error(Loc, ErrorStr.c_str());
diff --git a/lib/MC/MCSectionMachO.cpp b/lib/MC/MCSectionMachO.cpp
index e771556262..577e93aed6 100644
--- a/lib/MC/MCSectionMachO.cpp
+++ b/lib/MC/MCSectionMachO.cpp
@@ -180,9 +180,7 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
StringRef &Segment, // Out.
StringRef &Section, // Out.
unsigned &TAA, // Out.
- bool &TAAParsed, // Out.
unsigned &StubSize) { // Out.
- TAAParsed = false;
// Find the first comma.
std::pair<StringRef, StringRef> Comma = Spec.split(',');
@@ -213,7 +211,6 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
"between 1 and 16 characters";
// If there is no comma after the section, we're done.
- TAA = 0;
StubSize = 0;
if (Comma.second.empty())
return "";
@@ -238,7 +235,6 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
// Remember the TypeID.
TAA = TypeID;
- TAAParsed = true;
// If we have no comma after the section type, there are no attributes.
if (Comma.second.empty()) {