fix PR6475, we were doing side-effecting stuff in an assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97669 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-03-03 21:52:23 +00:00
Родитель 70d9d4196e
Коммит b992259f77
2 изменённых файлов: 16 добавлений и 7 удалений

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

@ -915,18 +915,17 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
for (unsigned i = 0, e = S.getNumOutputs(); i != e; i++) {
TargetInfo::ConstraintInfo Info(S.getOutputConstraint(i),
S.getOutputName(i));
assert(Target.validateOutputConstraint(Info) &&
"Failed to parse output constraint");
bool IsValid = Target.validateOutputConstraint(Info); (void)IsValid;
assert(IsValid && "Failed to parse output constraint");
OutputConstraintInfos.push_back(Info);
}
for (unsigned i = 0, e = S.getNumInputs(); i != e; i++) {
TargetInfo::ConstraintInfo Info(S.getInputConstraint(i),
S.getInputName(i));
assert(Target.validateInputConstraint(OutputConstraintInfos.data(),
S.getNumOutputs(),
Info) &&
"Failed to parse input constraint");
bool IsValid = Target.validateInputConstraint(OutputConstraintInfos.data(),
S.getNumOutputs(), Info);
assert(IsValid && "Failed to parse input constraint"); (void)IsValid;
InputConstraintInfos.push_back(Info);
}

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

@ -1,4 +1,4 @@
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o %t
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
void t1(int len) {
__asm__ volatile("" : "=&r"(len), "+&r"(len));
}
@ -110,3 +110,13 @@ int t16() {
);
return 0;
}
// PR6475
void t17() {
int i;
__asm__ ( "nop": "=m"(i));
// CHECK: @t17()
// CHECK: call void asm "nop", "=*m,
}