diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-24 18:34:27 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-24 18:34:27 +0000 |
commit | bf9ac228f7f90c776434db4ca8be457632fd225d (patch) | |
tree | 9f3ce3ee93e7a94031ac4586999744437622b624 /llvm/lib/Target/TargetAsmInfo.cpp | |
parent | 0b5be94c791854c57ab027176f34f7c79a9e7e69 (diff) | |
download | bcm5719-llvm-bf9ac228f7f90c776434db4ca8be457632fd225d.tar.gz bcm5719-llvm-bf9ac228f7f90c776434db4ca8be457632fd225d.zip |
make SectionForGlobal non-virtual, add a hook for pic16 to do its "address=" hack.
llvm-svn: 76989
Diffstat (limited to 'llvm/lib/Target/TargetAsmInfo.cpp')
-rw-r--r-- | llvm/lib/Target/TargetAsmInfo.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/llvm/lib/Target/TargetAsmInfo.cpp b/llvm/lib/Target/TargetAsmInfo.cpp index 985f41533e3..1ed9a716b4d 100644 --- a/llvm/lib/Target/TargetAsmInfo.cpp +++ b/llvm/lib/Target/TargetAsmInfo.cpp @@ -263,10 +263,18 @@ TargetAsmInfo::SectionKindForGlobal(const GlobalValue *GV) const { const Section *TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { - // Select section name + SectionKind::Kind Kind = SectionKindForGlobal(GV); + + // Select section name. if (GV->hasSection()) { + + // If the target has special section hacks for specifically named globals, + // return them now. + if (const Section *TS = getSpecialCasedSectionGlobals(GV, Kind)) + return TS; + // Honour section already set, if any. - unsigned Flags = SectionFlagsForGlobal(GV, SectionKindForGlobal(GV)); + unsigned Flags = SectionFlagsForGlobal(GV, Kind); // This is an explicitly named section. Flags |= SectionFlags::Named; @@ -282,9 +290,8 @@ const Section *TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { // If this global is linkonce/weak and the target handles this by emitting it // into a 'uniqued' section name, create and return the section now. if (GV->isWeakForLinker()) { - if (const char *Prefix = - getSectionPrefixForUniqueGlobal(SectionKindForGlobal(GV))) { - unsigned Flags = SectionFlagsForGlobal(GV, SectionKindForGlobal(GV)); + if (const char *Prefix = getSectionPrefixForUniqueGlobal(Kind)) { + unsigned Flags = SectionFlagsForGlobal(GV, Kind); // FIXME: Use mangler interface (PR4584). std::string Name = Prefix+GV->getNameStr(); |