From: Bill Wendling Date: Mon, 12 Nov 2012 22:01:56 +0000 (+0000) Subject: Don't test for incomplete types. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1da2cb3fdb6444e9db7db0e17b3cd505771d688;p=platform%2Fupstream%2Fllvm.git Don't test for incomplete types. llvm-svn: 167761 --- diff --git a/clang/lib/Sema/SemaStmtAsm.cpp b/clang/lib/Sema/SemaStmtAsm.cpp index e3b5dd8..2578e0f 100644 --- a/clang/lib/Sema/SemaStmtAsm.cpp +++ b/clang/lib/Sema/SemaStmtAsm.cpp @@ -181,9 +181,6 @@ StmtResult Sema::ActOnGCCAsmStmt(SourceLocation AsmLoc, bool IsSimple, InputConstraintInfos.push_back(Info); const Type *Ty = Exprs[i]->getType().getTypePtr(); - if (Ty->isDependentType() || Ty->isIncompleteType()) - continue; - unsigned Size = Context.getTypeSize(Ty); if (!Context.getTargetInfo().validateInputSize(Literal->getString(), Size)) diff --git a/clang/test/CodeGen/x86_32-inline-asm.c b/clang/test/CodeGen/x86_32-inline-asm.c index 7b342a6..a9038ab 100644 --- a/clang/test/CodeGen/x86_32-inline-asm.c +++ b/clang/test/CodeGen/x86_32-inline-asm.c @@ -7,7 +7,9 @@ typedef u_int32_t uint32_t; typedef unsigned long long u_int64_t; typedef u_int64_t uint64_t; -int main () { +struct S; + +int func(struct S *s) { // Error out if size is > 32-bits. uint32_t msr = 0x8b; uint64_t val = 0; @@ -21,4 +23,7 @@ int main () { unsigned char data; unsigned int port; __asm__ volatile("outb %0, %w1" : : "a" (data), "Nd" (port)); // No error expected. + + // Don't error out for incomplete types. + __asm(""::"a"(*s)); // No error expected. }