diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Basic/TargetInfo.cpp | 3 | ||||
-rw-r--r-- | clang/test/Sema/asm.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 5aa84afc4d0..d0ed6e6b161 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -482,6 +482,9 @@ bool TargetInfo::validateInputConstraint(ConstraintInfo *OutputConstraints, ConstraintInfo &Info) const { const char *Name = Info.ConstraintStr.c_str(); + if (!*Name) + return false; + while (*Name) { switch (*Name) { default: diff --git a/clang/test/Sema/asm.c b/clang/test/Sema/asm.c index c81f16a3875..1559b228c87 100644 --- a/clang/test/Sema/asm.c +++ b/clang/test/Sema/asm.c @@ -13,6 +13,9 @@ void f() { asm ("foo\n" : "=a" (i) : "[" (i)); // expected-error {{invalid input constraint '[' in asm}} asm ("foo\n" : "=a" (i) : "[foo" (i)); // expected-error {{invalid input constraint '[foo' in asm}} asm ("foo\n" : "=a" (i) : "[symbolic_name]" (i)); // expected-error {{invalid input constraint '[symbolic_name]' in asm}} + + asm ("foo\n" : : "" (i)); // expected-error {{invalid input constraint '' in asm}} + asm ("foo\n" : "=a" (i) : "" (i)); // expected-error {{invalid input constraint '' in asm}} } void clobbers() { |