зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
70d9d4196e
Коммит
b992259f77
|
@ -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,
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче