Patch below addresses bug 18075, a regression in Clang's ability to
ignore OpenBSD's "bounded" attribute extension.  Included also is a
patch to hopefully prevent such future regressions.

I'd appreciate if someone would commit this for me; it prevents almost
all code from being compiled on OpenBSD with Clang.

Thanks!

Index: include/clang/Basic/Attr.td
===================================================================
--- include/clang/Basic/Attr.td (revision 196358)
+++ include/clang/Basic/Attr.td (working copy)
@@ -286,6 +286,8 @@
 
 def Bounded : IgnoredAttr {
   let Spellings = [GNU<"bounded">];
+  let Args = [IdentifierArgument<"Type">, IntArgument<"Arg1">,
+              IntArgument<"Arg2">, IntArgument<"Arg3", 1>];
 }
 
 def CarriesDependency : InheritableParamAttr {
Index: test/Misc/openbsd-bounded.c
===================================================================
--- test/Misc/openbsd-bounded.c (revision 0)
+++ test/Misc/openbsd-bounded.c (working copy)
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -fsyntax-only %s
+// Make sure OpenBSD's bounded extension is accepted.
+
+typedef long ssize_t;
+typedef unsigned long size_t;
+typedef struct FILE FILE;
+
+ssize_t read(int, void *, size_t)
+    __attribute__((__bounded__(__buffer__,2,3)));
+int readlink(const char *, char *, size_t)
+    __attribute__((__bounded__(__string__,2,3)));
+size_t fread(void *, size_t, size_t, FILE *)
+    __attribute__((__bounded__(__size__,1,3,2)));
+char *getwd(char *)
+    __attribute__((__bounded__(__minbytes__,1,1024)));
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to