forked from OSchip/llvm-project
![]() 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. llvm-svn: 296076 |
||
---|---|---|
.. | ||
Inputs | ||
2007-10-03-MetadataPointers.mm | ||
2010-08-04-Template.mm | ||
2010-08-06-X.Y-syntax.mm | ||
address-safety-attr.mm | ||
arc-attrs-abi.mm | ||
arc-attrs.mm | ||
arc-blocks.mm | ||
arc-constexpr.mm | ||
arc-cxx11-init-list.mm | ||
arc-cxx11-member-init.mm | ||
arc-exceptions.mm | ||
arc-globals.mm | ||
arc-mangle.mm | ||
arc-move.mm | ||
arc-new-delete.mm | ||
arc-pseudo-destructors.mm | ||
arc-references.mm | ||
arc-returns-inner-reference-ptr.mm | ||
arc-special-member-functions.mm | ||
arc-weak.mm | ||
arc.mm | ||
auto-release-result-assert.mm | ||
block-default-arg.mm | ||
block-id.mm | ||
block-in-template-inst.mm | ||
block-nested-in-lambda.cpp | ||
block-var-layout.mm | ||
blocks.mm | ||
catch-id-type.mm | ||
copy.mm | ||
copyable-property-object.mm | ||
debug-info-block-capture-this.mm | ||
debug-info-cyclic.mm | ||
debug-info-line.mm | ||
debug-info.mm | ||
designated-initializers.mm | ||
destroy.mm | ||
encode.mm | ||
exception-cxx.mm | ||
exceptions-legacy.mm | ||
exceptions.mm | ||
externally-initialized-selectors.mm | ||
foreach-statement.mm | ||
gc.mm | ||
implementation-in-extern-c.mm | ||
implicit-copy-assign-operator.mm | ||
implicit-copy-constructor.mm | ||
ivar-objects.mm | ||
lambda-expressions.mm | ||
literals.mm | ||
lvalue-reference-getter.mm | ||
mangle-blocks.mm | ||
mangle.mm | ||
message-reference.mm | ||
message.mm | ||
method-local-extern-mangle.mm | ||
microsoft-abi-arc-param-order.mm | ||
mrc-weak.mm | ||
nested-ehlocation.mm | ||
nrvo.mm | ||
objc-container-subscripting-1.mm | ||
objc-container-subscripting.mm | ||
personality-abuse.mm | ||
pr14474-gline-tables-only.mm | ||
property-derived-to-base-conv.mm | ||
property-dot-copy.mm | ||
property-dot-reference.mm | ||
property-lvalue-capture.mm | ||
property-object-conditional-exp.mm | ||
property-object-reference-1.mm | ||
property-object-reference-2.mm | ||
property-object-reference.mm | ||
property-objects.mm | ||
property-reference.mm | ||
refence-assign-write-barrier.mm | ||
references.mm | ||
return.mm | ||
rtti.mm | ||
selector-expr-lvalue.mm | ||
subst-sel.mm | ||
unknown-anytype.mm | ||
write-barrier-global-assign.mm |