forked from OSchip/llvm-project
[ms-inline asm] Remove old cruft now that MS-style asms their own code path.
llvm-svn: 162210
This commit is contained in:
parent
0a9ea7c70d
commit
d4e55b8e35
|
@ -1385,10 +1385,10 @@ class AsmStmt : public Stmt {
|
|||
|
||||
public:
|
||||
AsmStmt(ASTContext &C, SourceLocation asmloc, bool issimple, bool isvolatile,
|
||||
bool msasm, unsigned numoutputs, unsigned numinputs,
|
||||
IdentifierInfo **names, StringLiteral **constraints,
|
||||
Expr **exprs, StringLiteral *asmstr, unsigned numclobbers,
|
||||
StringLiteral **clobbers, SourceLocation rparenloc);
|
||||
unsigned numoutputs, unsigned numinputs, IdentifierInfo **names,
|
||||
StringLiteral **constraints, Expr **exprs, StringLiteral *asmstr,
|
||||
unsigned numclobbers, StringLiteral **clobbers,
|
||||
SourceLocation rparenloc);
|
||||
|
||||
/// \brief Build an empty inline-assembly statement.
|
||||
explicit AsmStmt(EmptyShell Empty) : Stmt(AsmStmtClass, Empty),
|
||||
|
@ -1403,8 +1403,6 @@ public:
|
|||
void setVolatile(bool V) { IsVolatile = V; }
|
||||
bool isSimple() const { return IsSimple; }
|
||||
void setSimple(bool V) { IsSimple = V; }
|
||||
bool isMSAsm() const { return MSAsm; }
|
||||
void setMSAsm(bool V) { MSAsm = V; }
|
||||
|
||||
//===--- Asm String Analysis ---===//
|
||||
|
||||
|
|
|
@ -2544,8 +2544,7 @@ public:
|
|||
MultiExprArg Exprs,
|
||||
Expr *AsmString,
|
||||
MultiExprArg Clobbers,
|
||||
SourceLocation RParenLoc,
|
||||
bool MSAsm = false);
|
||||
SourceLocation RParenLoc);
|
||||
|
||||
StmtResult ActOnMSAsmStmt(SourceLocation AsmLoc,
|
||||
SourceLocation LBraceLoc,
|
||||
|
|
|
@ -559,14 +559,13 @@ QualType CXXCatchStmt::getCaughtType() const {
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
AsmStmt::AsmStmt(ASTContext &C, SourceLocation asmloc, bool issimple,
|
||||
bool isvolatile, bool msasm,
|
||||
unsigned numoutputs, unsigned numinputs,
|
||||
bool isvolatile, unsigned numoutputs, unsigned numinputs,
|
||||
IdentifierInfo **names, StringLiteral **constraints,
|
||||
Expr **exprs, StringLiteral *asmstr, unsigned numclobbers,
|
||||
StringLiteral **clobbers, SourceLocation rparenloc)
|
||||
: Stmt(AsmStmtClass), AsmLoc(asmloc), RParenLoc(rparenloc), AsmStr(asmstr)
|
||||
, IsSimple(issimple), IsVolatile(isvolatile), MSAsm(msasm)
|
||||
, NumOutputs(numoutputs), NumInputs(numinputs), NumClobbers(numclobbers) {
|
||||
, IsSimple(issimple), IsVolatile(isvolatile), NumOutputs(numoutputs)
|
||||
, NumInputs(numinputs), NumClobbers(numclobbers) {
|
||||
|
||||
unsigned NumExprs = NumOutputs + NumInputs;
|
||||
|
||||
|
|
|
@ -182,13 +182,6 @@ static ControlFlowKind CheckFallThrough(AnalysisDeclContext &AC) {
|
|||
HasFakeEdge = true;
|
||||
continue;
|
||||
}
|
||||
if (const AsmStmt *AS = dyn_cast<AsmStmt>(S)) {
|
||||
if (AS->isMSAsm()) {
|
||||
HasFakeEdge = true;
|
||||
HasLiveReturn = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (isa<MSAsmStmt>(S)) {
|
||||
// TODO: Verify this is correct.
|
||||
HasFakeEdge = true;
|
||||
|
|
|
@ -94,7 +94,7 @@ StmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, bool IsSimple,
|
|||
unsigned NumInputs, IdentifierInfo **Names,
|
||||
MultiExprArg constraints, MultiExprArg exprs,
|
||||
Expr *asmString, MultiExprArg clobbers,
|
||||
SourceLocation RParenLoc, bool MSAsm) {
|
||||
SourceLocation RParenLoc) {
|
||||
unsigned NumClobbers = clobbers.size();
|
||||
StringLiteral **Constraints =
|
||||
reinterpret_cast<StringLiteral**>(constraints.get());
|
||||
|
@ -199,9 +199,9 @@ StmtResult Sema::ActOnAsmStmt(SourceLocation AsmLoc, bool IsSimple,
|
|||
}
|
||||
|
||||
AsmStmt *NS =
|
||||
new (Context) AsmStmt(Context, AsmLoc, IsSimple, IsVolatile, MSAsm,
|
||||
NumOutputs, NumInputs, Names, Constraints, Exprs,
|
||||
AsmString, NumClobbers, Clobbers, RParenLoc);
|
||||
new (Context) AsmStmt(Context, AsmLoc, IsSimple, IsVolatile, NumOutputs,
|
||||
NumInputs, Names, Constraints, Exprs, AsmString,
|
||||
NumClobbers, Clobbers, RParenLoc);
|
||||
// Validate the asm string, ensuring it makes sense given the operands we
|
||||
// have.
|
||||
SmallVector<AsmStmt::AsmStringPiece, 8> Pieces;
|
||||
|
|
|
@ -1172,12 +1172,11 @@ public:
|
|||
MultiExprArg Exprs,
|
||||
Expr *AsmString,
|
||||
MultiExprArg Clobbers,
|
||||
SourceLocation RParenLoc,
|
||||
bool MSAsm) {
|
||||
SourceLocation RParenLoc) {
|
||||
return getSema().ActOnAsmStmt(AsmLoc, IsSimple, IsVolatile, NumOutputs,
|
||||
NumInputs, Names, move(Constraints),
|
||||
Exprs, AsmString, Clobbers,
|
||||
RParenLoc, MSAsm);
|
||||
RParenLoc);
|
||||
}
|
||||
|
||||
/// \brief Build a new MS style inline asm statement.
|
||||
|
@ -5600,8 +5599,7 @@ TreeTransform<Derived>::TransformAsmStmt(AsmStmt *S) {
|
|||
move_arg(Exprs),
|
||||
AsmString.get(),
|
||||
move_arg(Clobbers),
|
||||
S->getRParenLoc(),
|
||||
S->isMSAsm());
|
||||
S->getRParenLoc());
|
||||
}
|
||||
|
||||
template<typename Derived>
|
||||
|
|
|
@ -297,7 +297,6 @@ void ASTStmtReader::VisitAsmStmt(AsmStmt *S) {
|
|||
S->setRParenLoc(ReadSourceLocation(Record, Idx));
|
||||
S->setVolatile(Record[Idx++]);
|
||||
S->setSimple(Record[Idx++]);
|
||||
S->setMSAsm(Record[Idx++]);
|
||||
|
||||
S->setAsmString(cast_or_null<StringLiteral>(Reader.ReadSubStmt()));
|
||||
|
||||
|
|
|
@ -227,7 +227,6 @@ void ASTStmtWriter::VisitAsmStmt(AsmStmt *S) {
|
|||
Writer.AddSourceLocation(S->getRParenLoc(), Record);
|
||||
Record.push_back(S->isVolatile());
|
||||
Record.push_back(S->isSimple());
|
||||
Record.push_back(S->isMSAsm());
|
||||
Writer.AddStmt(S->getAsmString());
|
||||
|
||||
// Outputs
|
||||
|
|
Loading…
Reference in New Issue