summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/DiagnosticSerializationKinds.td
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2017-02-24 02:49:47 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2017-02-24 02:49:47 +0000
commit8d92d799c7fd1127f4fa004c26dca45e7eab8ed0 (patch)
tree7b1535aeb824baa4749972d39110aea3aa6e294a /include/clang/Basic/DiagnosticSerializationKinds.td
parent9120d612824ea7eb445fa105841a1fbab6a6cfc2 (diff)
Represent pass_object_size attrs in ExtParameterInfo
The goal of this is to fix a bug in modules where we'd merge FunctionDecls that differed in their pass_object_size attributes. Since we can overload on the presence of pass_object_size attributes, this behavior is incorrect. We don't represent `N` in `pass_object_size(N)` as part of ExtParameterInfo, since it's an error to overload solely on the value of N. This means that we have a bug if we have two modules that declare functions that differ only in their pass_object_size attrs, like so: // In module A, from a.h void foo(char *__attribute__((pass_object_size(0)))); // In module B, from b.h void foo(char *__attribute__((pass_object_size(1)))); // In module C, in main.c #include "a.h" #include "b.h" At the moment, we'll merge the foo decls, when we should instead emit a diagnostic about an invalid overload. We seem to have similar (silent) behavior if we overload only on the return type of `foo` instead; I'll try to find a good place to put a FIXME (or I'll just file a bug) soon. This patch also fixes a bug where we'd not output the proper extended parameter info for declarations with pass_object_size attrs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@296076 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/DiagnosticSerializationKinds.td')
0 files changed, 0 insertions, 0 deletions