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:
Chris Lattner 2009-03-10 06:42:37 +00:00
Родитель 02af974dca
Коммит 88beebe6ec
2 изменённых файлов: 9 добавлений и 4 удалений

Просмотреть файл

@ -707,8 +707,6 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
std::string Result; std::string Result;
unsigned NumOperands = S.getNumOutputs() + S.getNumInputs();
while (1) { while (1) {
// Done with the string? // Done with the string?
if (StrStart == StrEnd) if (StrStart == StrEnd)
@ -754,7 +752,8 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
StrStart = End; StrStart = End;
// FIXME: This should be caught during Sema. // 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') if (Modifier == '\0')
Result += '$' + llvm::utostr(N); Result += '$' + llvm::utostr(N);

Просмотреть файл

@ -28,7 +28,7 @@ void t6(void) {
__asm__ volatile("" : : "i" (t6)); __asm__ volatile("" : : "i" (t6));
} }
// RUN: grep "T7 NAMED: \$2" %t // RUN: grep "T7 NAMED: \$2" %t &&
void t7(int a) { void t7(int a) {
__asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4)); __asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4));
} }
@ -37,3 +37,9 @@ void t7(int a) {
void t8() { void t8() {
__asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4)); __asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4));
} }
// PR3682
unsigned t9(unsigned int a) {
asm("bswap %0 %1" : "+r" (a));
return a;
}