<div dir="ltr">Maybe - though that'd actually make for larger debug info & not be much use. <br><br>With nodebug+always_inline (which is how the intrinsics are provided) the function call dissolves into the raw instruction it's meant to represent. The debug info describes that instruction as if it had been written at the point of the call.<br><br>With this artificial+always_inline a description of inlining would be provided (DWARF's inlining description is a bit heavy/verbose) & the debugger would step over it, rather than into it.<br><br>For longer functions (inlined or outlined), marking as artificial makes sense, I think, but /probably/ not for those places already using nodebug+always_inline.<br><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 13, 2018 at 3:18 PM Reid Kleckner via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">rnk accepted this revision.<br>
rnk added subscribers: probinson, aprantl, dblaikie.<br>
rnk added a comment.<br>
This revision is now accepted and ready to land.<br>
<br>
lgtm<br>
<br>
---<br>
<br>
Clang's builtin headers use `__attribute__((__nodebug__))` for this purpose. Do you think we should follow this up by using artificial instead? It seems like it would be a representational improvement. @aprantl @probinson @dblaikie<br>
<br>
<br>
<br>
================<br>
Comment at: test/Sema/artificial.c:3<br>
+<br>
+void __attribute__((artificial)) bar() {} // expected-warning {{'artificial' attribute only applies to inline functions}}<br>
----------------<br>
I think it's worth adding the `foo` function from the CodeGen test here to show we don't generate warnings when the function is inline specified.<br>
<br>
<br>
<a href="https://reviews.llvm.org/D43259" rel="noreferrer" target="_blank">https://reviews.llvm.org/D43259</a><br>
<br>
<br>
<br>
</blockquote></div></div>