зеркало из https://github.com/microsoft/clang-1.git
Fix PR3682 by just disabling a broken assertion. This check should be
done in sema, and is reflected by the existing PR3258. In the meantime, fix PR3682 by disabling a bogus assertion (which doesn't account for + operands). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66533 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
02af974dca
Коммит
88beebe6ec
|
@ -707,8 +707,6 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
|
|||
|
||||
std::string Result;
|
||||
|
||||
unsigned NumOperands = S.getNumOutputs() + S.getNumInputs();
|
||||
|
||||
while (1) {
|
||||
// Done with the string?
|
||||
if (StrStart == StrEnd)
|
||||
|
@ -754,7 +752,8 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
|
|||
StrStart = End;
|
||||
|
||||
// FIXME: This should be caught during Sema.
|
||||
assert(N < NumOperands && "Operand number out of range!");
|
||||
//unsigned NumOperands = S.getNumOutputs() + S.getNumInputs();
|
||||
//assert(N < NumOperands && "Operand number out of range!");
|
||||
|
||||
if (Modifier == '\0')
|
||||
Result += '$' + llvm::utostr(N);
|
||||
|
|
|
@ -28,7 +28,7 @@ void t6(void) {
|
|||
__asm__ volatile("" : : "i" (t6));
|
||||
}
|
||||
|
||||
// RUN: grep "T7 NAMED: \$2" %t
|
||||
// RUN: grep "T7 NAMED: \$2" %t &&
|
||||
void t7(int a) {
|
||||
__asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4));
|
||||
}
|
||||
|
@ -37,3 +37,9 @@ void t7(int a) {
|
|||
void t8() {
|
||||
__asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4));
|
||||
}
|
||||
|
||||
// PR3682
|
||||
unsigned t9(unsigned int a) {
|
||||
asm("bswap %0 %1" : "+r" (a));
|
||||
return a;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче