dblaikie added a comment.

In D70524#1783363 <https://reviews.llvm.org/D70524#1783363>, @probinson wrote:

> > Hmm, maybe this feature/suggestion is broken or at least not exactly 
> > awesome when it comes to auto-returning functions that are eventually 
> > void-returning functions? Now the function definition has no DW_AT_type to 
> > override the unspecified_type in the declaration... :/ that's unfortunate 
> > (@probinson - thoughts?)
>
> Normally, the DW_AT_specification on the definition would mean, look at the 
> declaration for additional attributes, such as DW_AT_type.  However, the 
> declaration's unspecified_type means, look at the definition.  The definition 
> omits DW_AT_type, therefore the return type is "void".
>  It's a wee bit circular, but I think it's not unreasonable to expect the 
> consumer to figure this out.


Fair enough. I think that's pretty awkward, but don't feel strongly enough to 
say that's bad/wrong - it's what GCC does, it's probably what GDB understands, 
etc.

Test cases/functionality need to be fixed here, because currently the deduced 
type isn't being carried on the function definition (it just "works out" for 
the limited testing provided - because the test is testing void return, but 
adding/changing the test to test non-void return should expose the bug)

Also - I think this probably should be enabled even pre-DWARFv5. GDB does that 
and unspecified_type is available pre-v5 & it saves having a divergence in the 
frontend for v5 generation which I think is probably good (I don't think we 
have that as a hard line, but I'd tend to think it's a direction we should 
generally lean in - where the DWARF version is handled by the metadata 
attribute and the backend for the most part/where possible).


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70524/new/

https://reviews.llvm.org/D70524



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to