aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-11-12 22:01:56 +0000
committerBill Wendling <isanbard@gmail.com>2012-11-12 22:01:56 +0000
commit5ece32e3359ca34fcdab07829f5e9fdbfd157f78 (patch)
tree545218a614fda8d322f2c587def27157ffba34f7
parent5f9a7e31d038843f1d3a5e2544fc365ffd563951 (diff)
Don't test for incomplete types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167761 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaStmtAsm.cpp3
-rw-r--r--test/CodeGen/x86_32-inline-asm.c7
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/Sema/SemaStmtAsm.cpp b/lib/Sema/SemaStmtAsm.cpp
index e3b5dd851f..2578e0f41e 100644
--- a/lib/Sema/SemaStmtAsm.cpp
+++ b/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/test/CodeGen/x86_32-inline-asm.c b/test/CodeGen/x86_32-inline-asm.c
index 7b342a6a26..a9038abc84 100644
--- a/test/CodeGen/x86_32-inline-asm.c
+++ b/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.
}