mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 22:04:55 +00:00
Two changes:
1) unique globals with the existing "Count" local in Mangler, not with atomic nonsense. Using atomics will give us nondeterminstic output from the compiler when using multiple threads, which is bad. 2) Do not mangle an unknown global name with a type suffix. We don't need this anymore now that llvm ir doesn't have type planes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75541 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d84b41615e
commit
d4f53b373e
@ -14,7 +14,6 @@
|
|||||||
#include "llvm/Support/Mangler.h"
|
#include "llvm/Support/Mangler.h"
|
||||||
#include "llvm/DerivedTypes.h"
|
#include "llvm/DerivedTypes.h"
|
||||||
#include "llvm/Module.h"
|
#include "llvm/Module.h"
|
||||||
#include "llvm/System/Atomic.h"
|
|
||||||
#include "llvm/ADT/STLExtras.h"
|
#include "llvm/ADT/STLExtras.h"
|
||||||
#include "llvm/ADT/StringExtras.h"
|
#include "llvm/ADT/StringExtras.h"
|
||||||
#include "llvm/ADT/StringMap.h"
|
#include "llvm/ADT/StringMap.h"
|
||||||
@ -151,7 +150,7 @@ std::string Mangler::getValueName(const Value *V) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string Mangler::getValueName(const GlobalValue *GV, const char * Suffix) {
|
std::string Mangler::getValueName(const GlobalValue *GV, const char *Suffix) {
|
||||||
// Check to see whether we've already named V.
|
// Check to see whether we've already named V.
|
||||||
std::string &Name = Memo[GV];
|
std::string &Name = Memo[GV];
|
||||||
if (!Name.empty())
|
if (!Name.empty())
|
||||||
@ -164,13 +163,7 @@ std::string Mangler::getValueName(const GlobalValue *GV, const char * Suffix) {
|
|||||||
Name = GV->getNameStart(); // Is an intrinsic function
|
Name = GV->getNameStart(); // Is an intrinsic function
|
||||||
} else if (!GV->hasName()) {
|
} else if (!GV->hasName()) {
|
||||||
// Must mangle the global into a unique ID.
|
// Must mangle the global into a unique ID.
|
||||||
unsigned TypeUniqueID = getTypeID(GV->getType());
|
Name = "__unnamed_" + utostr(Count++);
|
||||||
static uint32_t GlobalID = 0;
|
|
||||||
|
|
||||||
unsigned OldID = GlobalID;
|
|
||||||
sys::AtomicIncrement(&GlobalID);
|
|
||||||
|
|
||||||
Name = "__unnamed_" + utostr(TypeUniqueID) + "_" + utostr(OldID);
|
|
||||||
} else {
|
} else {
|
||||||
if (GV->hasPrivateLinkage())
|
if (GV->hasPrivateLinkage())
|
||||||
Name = makeNameProper(GV->getName() + Suffix, Prefix, PrivatePrefix);
|
Name = makeNameProper(GV->getName() + Suffix, Prefix, PrivatePrefix);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | llc | grep unnamed_1_0.eh
|
; RUN: llvm-as < %s | llc | grep unnamed_0.eh
|
||||||
; ModuleID = '<stdin>'
|
|
||||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||||
target triple = "i386-apple-darwin8"
|
target triple = "i386-apple-darwin8"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user