Skip to content

Commit fe3760e

Browse files
committed
NVPTX: Implement printMCExpr with generic print
3d2a976 (2015) copied and adapted the generic printer to reduce parentheses, which is unnecessary after #133674.
1 parent 7dbae40 commit fe3760e

File tree

1 file changed

+1
-68
lines changed

1 file changed

+1
-68
lines changed

llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1849,75 +1849,8 @@ NVPTXAsmPrinter::lowerConstantForGV(const Constant *CV,
18491849
report_fatal_error(Twine(OS.str()));
18501850
}
18511851

1852-
// Copy of MCExpr::print customized for NVPTX
18531852
void NVPTXAsmPrinter::printMCExpr(const MCExpr &Expr, raw_ostream &OS) const {
1854-
switch (Expr.getKind()) {
1855-
case MCExpr::Target:
1856-
return cast<MCTargetExpr>(&Expr)->printImpl(OS, MAI);
1857-
case MCExpr::Constant:
1858-
OS << cast<MCConstantExpr>(Expr).getValue();
1859-
return;
1860-
1861-
case MCExpr::SymbolRef: {
1862-
const MCSymbolRefExpr &SRE = cast<MCSymbolRefExpr>(Expr);
1863-
const MCSymbol &Sym = SRE.getSymbol();
1864-
Sym.print(OS, MAI);
1865-
return;
1866-
}
1867-
1868-
case MCExpr::Unary: {
1869-
const MCUnaryExpr &UE = cast<MCUnaryExpr>(Expr);
1870-
switch (UE.getOpcode()) {
1871-
case MCUnaryExpr::LNot: OS << '!'; break;
1872-
case MCUnaryExpr::Minus: OS << '-'; break;
1873-
case MCUnaryExpr::Not: OS << '~'; break;
1874-
case MCUnaryExpr::Plus: OS << '+'; break;
1875-
}
1876-
printMCExpr(*UE.getSubExpr(), OS);
1877-
return;
1878-
}
1879-
1880-
case MCExpr::Binary: {
1881-
const MCBinaryExpr &BE = cast<MCBinaryExpr>(Expr);
1882-
1883-
// Only print parens around the LHS if it is non-trivial.
1884-
if (isa<MCConstantExpr>(BE.getLHS()) || isa<MCSymbolRefExpr>(BE.getLHS()) ||
1885-
isa<NVPTXGenericMCSymbolRefExpr>(BE.getLHS())) {
1886-
printMCExpr(*BE.getLHS(), OS);
1887-
} else {
1888-
OS << '(';
1889-
printMCExpr(*BE.getLHS(), OS);
1890-
OS<< ')';
1891-
}
1892-
1893-
switch (BE.getOpcode()) {
1894-
case MCBinaryExpr::Add:
1895-
// Print "X-42" instead of "X+-42".
1896-
if (const MCConstantExpr *RHSC = dyn_cast<MCConstantExpr>(BE.getRHS())) {
1897-
if (RHSC->getValue() < 0) {
1898-
OS << RHSC->getValue();
1899-
return;
1900-
}
1901-
}
1902-
1903-
OS << '+';
1904-
break;
1905-
default: llvm_unreachable("Unhandled binary operator");
1906-
}
1907-
1908-
// Only print parens around the LHS if it is non-trivial.
1909-
if (isa<MCConstantExpr>(BE.getRHS()) || isa<MCSymbolRefExpr>(BE.getRHS())) {
1910-
printMCExpr(*BE.getRHS(), OS);
1911-
} else {
1912-
OS << '(';
1913-
printMCExpr(*BE.getRHS(), OS);
1914-
OS << ')';
1915-
}
1916-
return;
1917-
}
1918-
}
1919-
1920-
llvm_unreachable("Invalid expression kind!");
1853+
Expr.print(OS, OutContext.getAsmInfo());
19211854
}
19221855

19231856
/// PrintAsmOperand - Print out an operand for an inline asm expression.

0 commit comments

Comments
 (0)