mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Remove duplicate entries while printing decls for external symbols.
Some libcall names are same, so they were getting printed twice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77215 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e34887d5d0
commit
be7b97b773
@ -156,6 +156,26 @@ void PIC16AsmPrinter::printCCOperand(const MachineInstr *MI, int opNum) {
|
||||
O << PIC16CondCodeToString((PIC16CC::CondCodes)CC);
|
||||
}
|
||||
|
||||
// This function is used to sort the decls list.
|
||||
// should return true if s1 should come before s2.
|
||||
static bool is_before(const char *s1, const char *s2) {
|
||||
std::string str1 = s1;
|
||||
std::string str2 = s2;
|
||||
int i = str1.compare(str2);
|
||||
// Return true if s1 is smaller or equal.
|
||||
if (i <= 0) return true;
|
||||
// false if s1 should come after s2.
|
||||
return false;
|
||||
}
|
||||
|
||||
// This is used by list::unique below.
|
||||
// unique will filter out duplicates if it knows them.
|
||||
static bool is_duplicate(const char *s1, const char *s2) {
|
||||
std::string str1 = s1;
|
||||
std::string str2 = s2;
|
||||
return str1 == str2;
|
||||
}
|
||||
|
||||
/// printLibcallDecls - print the extern declarations for compiler
|
||||
/// intrinsics.
|
||||
///
|
||||
@ -165,8 +185,9 @@ void PIC16AsmPrinter::printLibcallDecls(void) {
|
||||
|
||||
O << TAI->getCommentString() << "External decls for libcalls - BEGIN." <<"\n";
|
||||
// Remove duplicate entries.
|
||||
LibcallDecls.sort();
|
||||
LibcallDecls.unique();
|
||||
LibcallDecls.sort(is_before);
|
||||
LibcallDecls.unique(is_duplicate);
|
||||
|
||||
for (std::list<const char*>::const_iterator I = LibcallDecls.begin();
|
||||
I != LibcallDecls.end(); I++) {
|
||||
O << TAI->getExternDirective() << *I << "\n";
|
||||
|
Loading…
Reference in New Issue
Block a user