<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">