mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
llvm-mc: Support reassignment of variables in one special case, when the
variable has not yet been used in an expression. This allows us to support a few cases that show up in real code (mostly because gcc generates it for Objective-C on Darwin), without giving up a reasonable semantic model for assignment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103950 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -52,10 +52,15 @@ namespace llvm {
|
||||
/// "Lfoo" or ".foo".
|
||||
unsigned IsTemporary : 1;
|
||||
|
||||
/// IsUsedInExpr - True if this symbol has been used in an expression and
|
||||
/// cannot be redefined.
|
||||
unsigned IsUsedInExpr : 1;
|
||||
|
||||
private: // MCContext creates and uniques these.
|
||||
friend class MCContext;
|
||||
MCSymbol(StringRef name, bool isTemporary)
|
||||
: Name(name), Section(0), Value(0), IsTemporary(isTemporary) {}
|
||||
: Name(name), Section(0), Value(0),
|
||||
IsTemporary(isTemporary), IsUsedInExpr(false) {}
|
||||
|
||||
MCSymbol(const MCSymbol&); // DO NOT IMPLEMENT
|
||||
void operator=(const MCSymbol&); // DO NOT IMPLEMENT
|
||||
@@ -63,13 +68,15 @@ namespace llvm {
|
||||
/// getName - Get the symbol name.
|
||||
StringRef getName() const { return Name; }
|
||||
|
||||
/// @name Symbol Type
|
||||
/// @name Accessors
|
||||
/// @{
|
||||
|
||||
/// isTemporary - Check if this is an assembler temporary symbol.
|
||||
bool isTemporary() const {
|
||||
return IsTemporary;
|
||||
}
|
||||
bool isTemporary() const { return IsTemporary; }
|
||||
|
||||
/// isUsedInExpr - Check if this is an assembler temporary symbol.
|
||||
bool isUsedInExpr() const { return IsUsedInExpr; }
|
||||
void setUsedInExpr(bool Value) { IsUsedInExpr = Value; }
|
||||
|
||||
/// @}
|
||||
/// @name Associated Sections
|
||||
|
Reference in New Issue
Block a user