mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
For PR645:
Keep track of global constant and variable definitions for eventual use in resolving conflicts between global and local symbol usage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32234 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9eef56f532
commit
999b2df114
@ -60,6 +60,12 @@ struct TypeInfo {
|
||||
|
||||
void destroy() const { delete newTy; }
|
||||
|
||||
TypeInfo clone() const {
|
||||
TypeInfo result = *this;
|
||||
result.newTy = new std::string(*newTy);
|
||||
return result;
|
||||
}
|
||||
|
||||
Types getElementType() const { return elemTy; }
|
||||
|
||||
bool isSigned() const {
|
||||
|
@ -39,6 +39,7 @@ typedef std::vector<TypeInfo> TypeVector;
|
||||
static TypeVector EnumeratedTypes;
|
||||
typedef std::map<std::string,TypeInfo> TypeMap;
|
||||
static TypeMap NamedTypes;
|
||||
static TypeMap Globals;
|
||||
|
||||
void destroy(ValueList* VL) {
|
||||
while (!VL->empty()) {
|
||||
@ -777,29 +778,37 @@ ConstPool : ConstPool OptAssign TYPE TypesV {
|
||||
$$ = 0;
|
||||
}
|
||||
| ConstPool OptAssign OptLinkage GlobalType ConstVal GlobalVarAttributes {
|
||||
if (!$2->empty())
|
||||
if (!$2->empty()) {
|
||||
*O << *$2 << " = ";
|
||||
Globals[*$2] = $5.type.clone();
|
||||
}
|
||||
*O << *$3 << " " << *$4 << " " << *$5.cnst << " " << *$6 << "\n";
|
||||
delete $2; delete $3; delete $4; $5.destroy(); delete $6;
|
||||
$$ = 0;
|
||||
}
|
||||
| ConstPool OptAssign External GlobalType Types GlobalVarAttributes {
|
||||
if (!$2->empty())
|
||||
if (!$2->empty()) {
|
||||
*O << *$2 << " = ";
|
||||
Globals[*$2] = $5.clone();
|
||||
}
|
||||
*O << *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
|
||||
delete $2; delete $3; delete $4; $5.destroy(); delete $6;
|
||||
$$ = 0;
|
||||
}
|
||||
| ConstPool OptAssign DLLIMPORT GlobalType Types GlobalVarAttributes {
|
||||
if (!$2->empty())
|
||||
if (!$2->empty()) {
|
||||
*O << *$2 << " = ";
|
||||
Globals[*$2] = $5.clone();
|
||||
}
|
||||
*O << *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
|
||||
delete $2; delete $3; delete $4; $5.destroy(); delete $6;
|
||||
$$ = 0;
|
||||
}
|
||||
| ConstPool OptAssign EXTERN_WEAK GlobalType Types GlobalVarAttributes {
|
||||
if (!$2->empty())
|
||||
if (!$2->empty()) {
|
||||
*O << *$2 << " = ";
|
||||
Globals[*$2] = $5.clone();
|
||||
}
|
||||
*O << *$3 << " " << *$4 << " " << *$5.newTy << " " << *$6 << "\n";
|
||||
delete $2; delete $3; delete $4; $5.destroy(); delete $6;
|
||||
$$ = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user