dblaikie added a comment.
>> - We could supply a test written in C, but it needs -O1 and is fairly
>> sensitive to the meaning of -O1 (e.g., clang started inlining and omitting
>> unsued inlined parameters only recently, so changes to -O1 could make a C
>> test easily meaningless). Any concerns here?
>
> It is really hard to make sure the compiler generates what you want for a
> test case as it will change over time and you might not end up testing what
> you think you are testing. The easiest way to avoid this is to emit the
> assembly from the compiler and then use that as the source for the test since
> that will guarantee the same output.
If anyone ever needs a hand constructing a stable debug info test case using
clang (or other compilers for that matter) - I'm totally happy to help. It's
quite possible to constrain the compiler enough and give it easy enough things
to inline to make it pretty reliable - for instance for this sort of issue, I'd
expect something like this is what I'd use to demonstrate a missing parameter:
__attribute__((optnone)) __attribute__((nodebug)) void use(int*) { }
inline void f1(int a, int b) {
use(&b);
}
int main() {
f1(5, 6);
}
This compiled with some optimizations (-O1 or above should be adequate) should
result in a single concrete subprogram for main, a single inlined subroutine
with a single formal parameter in the inlined subroutine (for 'b') and the
abstract origin will have both 'a' and 'b'.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110571/new/
https://reviews.llvm.org/D110571
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits