diff options
-rw-r--r-- | lib/CodeGen/CGStmt.cpp | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 3fd6526777..5989dcc068 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -714,10 +714,6 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) { unsigned NumOperands = S.getNumOutputs() + S.getNumInputs(); - // FIXME: Static counters are not thread safe or reproducible. - static unsigned AsmCounter = 0; - AsmCounter++; - while (*Start) { switch (*Start) { default: @@ -729,10 +725,8 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) { case '%': // Escaped character Start++; - if (!*Start) { - // FIXME: This should be caught during Sema. - assert(0 && "Trailing '%' in asm string."); - } + // FIXME: This should be caught during Sema. + assert(*Start && "Trailing '%' in asm string."); char EscapedChar = *Start; if (EscapedChar == '%') { @@ -740,7 +734,7 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) { Result += '%'; } else if (EscapedChar == '=') { // Generate an unique ID. - Result += llvm::utostr(AsmCounter); + Result += "${:uid}"; } else if (isdigit(EscapedChar)) { // %n - Assembler operand n char *End; @@ -823,8 +817,7 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) { static std::string SimplifyConstraint(const char* Constraint, TargetInfo &Target, const std::string *OutputNamesBegin = 0, - const std::string *OutputNamesEnd = 0) -{ + const std::string *OutputNamesEnd = 0) { std::string Result; while (*Constraint) { @@ -862,8 +855,7 @@ static std::string SimplifyConstraint(const char* Constraint, llvm::Value* CodeGenFunction::EmitAsmInput(const AsmStmt &S, TargetInfo::ConstraintInfo Info, const Expr *InputExpr, - std::string &ConstraintStr) -{ + std::string &ConstraintStr) { llvm::Value *Arg; if ((Info & TargetInfo::CI_AllowsRegister) || !(Info & TargetInfo::CI_AllowsMemory)) { |