diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-25 15:45:33 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-25 15:45:33 +0000 |
commit | e2c66244758578d1ed83c0c56b65bdfa9f3bf6b3 (patch) | |
tree | 8a1dcafa9ef58e7d49ae902b8fff65aa0adcb1fd /llvm/lib/MC/MCStreamer.cpp | |
parent | b1b8231c8b4d549440ce8fc2e11303341399c0e0 (diff) | |
download | bcm5719-llvm-e2c66244758578d1ed83c0c56b65bdfa9f3bf6b3.tar.gz bcm5719-llvm-e2c66244758578d1ed83c0c56b65bdfa9f3bf6b3.zip |
Move expression visitation logic up to MCStreamer.
Remove the duplicate from MCRecordStreamer. No functionality change.
llvm-svn: 211714
Diffstat (limited to 'llvm/lib/MC/MCStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 8e675e5f4ea..6b4bb6f432f 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -614,6 +614,35 @@ void MCStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) { TS->emitAssignment(Symbol, Value); } +void MCStreamer::visitUsedSymbol(const MCSymbol &Sym) { +} + +void MCStreamer::visitUsedExpr(const MCExpr &Expr) { + switch (Expr.getKind()) { + case MCExpr::Target: + cast<MCTargetExpr>(Expr).visitUsedExpr(*this); + break; + + case MCExpr::Constant: + break; + + case MCExpr::Binary: { + const MCBinaryExpr &BE = cast<MCBinaryExpr>(Expr); + visitUsedExpr(*BE.getLHS()); + visitUsedExpr(*BE.getRHS()); + break; + } + + case MCExpr::SymbolRef: + visitUsedSymbol(cast<MCSymbolRefExpr>(Expr).getSymbol()); + break; + + case MCExpr::Unary: + visitUsedExpr(*cast<MCUnaryExpr>(Expr).getSubExpr()); + break; + } +} + void MCStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {} void MCStreamer::EmitThumbFunc(MCSymbol *Func) {} void MCStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {} |