<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJzlVs1ymzAQfhpx0ZQBgcAcOCS46RP0zAgQRo0sGCTZbZ6-KzAJdn6dXjJTjwZZq_35vtWyqOqbP_lPLdQOoyQoy8oKaYQq--oXr02pxQNHZDMgUuAQkQx0sFD4KEwHE1OwkEJxzGqjsRT3HO_7hmOnpA1nDe7bWRL6KNii4Ob0TILTmJckEqqWFvRQVGjTCGX8DkXfX94eAe0b243o17uLTsNbh1R3_REY8d_DCHzwAM5MCwJECCJUo-gGw_xgES3UJCtgHc3qBT6ZrV0DHlsbPCcMo_R2FuPTD9xjhqILad2xEVe2RfQ2RXT7bN9Z1Y9SlD5pLEGZEfWS_UMvGtxaVZezAOjUPRzAHAaRm8GsUK8RDtbomfyZOXHaa0ynrL1aH2bKTuDMPmUZXlg6xiu6E8GyZAbOvrKGlyWeUG9Uv0B25lMOPkv-67F2RbBnAspw4xLwMonz8nOvHVM1vyiXc7azz2vZLq59V7afo33p4hn_R0fnxXxu95r-hxRHbuyoAPzznF_0pOn5oyigI7zRuqZcTv-uyht0mZBcZxee7NLZbJ2hN_2sq_QDYdeleR7tujCbOE7SOA7SKA0ySsMkpFcFft3BiwdVSKZ2__dRLepf8qy8Jo-aLMqYx6zp-jG_51x7dpR5Z8zgPruI3MHYwc3CVn7d72Eh5WGZvg1j7xDAUmhtObSyOxpBJK_L46YNkjaKNimvSRyHNMmykIVpk_IkrEjqSVZxqXP42ELbU_yIJxeuBdKt9-8IRE4CAiMIg5iSkPhxDYCiOGtoylNKKxQHHKpP-s6P3487b8wnl5XdadiUQhv9tMm0FjvF-QQYEBphJM_fvZvhvdAV79iBa3zs-HI3a7wJbj5h_QvF9eTF>53516</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
__builtin_object_size(p, 1) misbehaves when inlined
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kees
</td>
</tr>
</table>
<pre>
Using `__builtin_object_size(p, 1)` in within an inline acts like mode 0 instead of mode 1.
```
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#define show(expr) printf("%s: %zu\n", #expr, expr)
struct object {
int a;
char buf[7];
int c;
};
static inline void func_inline(const char *ptr)
{
puts("func_inline");
show(__builtin_object_size(ptr, 0));
show(__builtin_object_size(ptr, 1));
}
void __attribute__ ((noinline)) func(const char *ptr)
{
puts("func");
show(__builtin_object_size(ptr, 0));
show(__builtin_object_size(ptr, 1));
}
int main(void)
{
struct object instance;
puts("main");
show(__builtin_object_size(instance.buf, 0));
show(__builtin_object_size(instance.buf, 1));
func_inline(instance.buf);
func(instance.buf);
return 0;
}
```
GCC:
```
main
__builtin_object_size(instance.buf, 0): 12
__builtin_object_size(instance.buf, 1): 7
func_inline
__builtin_object_size(ptr, 0): 12
__builtin_object_size(ptr, 1): 7
func
__builtin_object_size(ptr, 0): 18446744073709551615
__builtin_object_size(ptr, 1): 18446744073709551615
```
Clang:
```
main
__builtin_object_size(instance.buf, 0): 12
__builtin_object_size(instance.buf, 1): 7
func_inline
__builtin_object_size(ptr, 0): 12
__builtin_object_size(ptr, 1): 12
func
__builtin_object_size(ptr, 0): 18446744073709551615
__builtin_object_size(ptr, 1): 18446744073709551615
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlVs1ymzAQfhpx0ZQBgZB94JCQpk_QMyOEMGqwYJAUt3n6rsAk2InTOKfM1KNB1mp_vm-1LKr6-k_-0yi9wyiLyrJyqrNKl331SwpbGvUkEdkMiBQ4RmQLOlhpfFC2hYlrWHRKS8yFNbhTDxLv-1pir2Ss5DXum1kShyi6Q9HN8ZlFxzEvSaK06BzooaQwtlbahi1Kvr-9PQLad7Zr1a93F51aNh6pafsDMJK_hxH44AGc2QYEiBBEqEHJDYb5ySFa6ElWwDqZ1Qt8NFu7BjxOWDwnDCN2O4vx8QfuMUfJmVS0fMSVaxC9ZYjevdr3VuJZitiLxhKUWyWW7D_2qsaN06KcBUBH9HAAcxhEbga7Qr1GODhrZvIn5sRrrzEds3axPuyUncibfcoyPrP0jFd0J4JlyS2cfeWsLEs8od7ofoHszaccfJb812Pti2DPFZThxifgbRKn5edfO66FPCuXU7azz2vZLq5DX7afo33u4hX_Z0enxXxqd0n_Q4qjtG7UAP51zs960vT8URTQEd5pXVMup39X5Q26TEyus4uPdmw2W2foXT_rKv1A2HVpnka7LswmTTOWphFLWLSlNM5ielXgyw7ePKii43r3fx_Vov4lzyqo86TeJlseWGU7mf_zpoH3ylSy5Y_S4EMrl5tGHbixy1trB_-pRuQexg5uI64KRb-HRdc9LtO3Yey9b1gqY5yE9ndPE0AXtHmdiYalm7jmWVOxjeCMs4SzRm4SwnhMg45XsjM5fKChVWp5wJML3zbpXaByEhEYURyllMQkTEUTZUm6rSmTjNIKpZGEeutCjyPsx10w5hOkyu0MbHbKWPOyyY1ROy3lFA78c2fbfswfpDTBFDefcP8FM57QRA">