diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-03 21:52:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-03 21:52:23 +0000 |
commit | 576def7fbe757b62742de5dbe9787a82983ffb8e (patch) | |
tree | cadb3ec0913fd00c2b8fda9fa98f8641259407d5 /clang | |
parent | 0dd0c47b7ebe75cca1ee5d6fa79f95359f5be720 (diff) | |
download | bcm5719-llvm-576def7fbe757b62742de5dbe9787a82983ffb8e.tar.gz bcm5719-llvm-576def7fbe757b62742de5dbe9787a82983ffb8e.zip |
fix PR6475, we were doing side-effecting stuff in an assert.
llvm-svn: 97669
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGStmt.cpp | 11 | ||||
-rw-r--r-- | clang/test/CodeGen/asm.c | 12 |
2 files changed, 16 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index 008a480b9c1..a889e55a9e8 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -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); } diff --git a/clang/test/CodeGen/asm.c b/clang/test/CodeGen/asm.c index df593d79fa1..fe9ca9a4c74 100644 --- a/clang/test/CodeGen/asm.c +++ b/clang/test/CodeGen/asm.c @@ -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, +} + |