Hi,

On Mon, Sep 12 2022, Richard Biener via Gcc wrote:
> On Mon, Sep 12, 2022 at 1:23 PM Fredrik Hederstierna via Gcc
> <gcc@gcc.gnu.org> wrote:
>>
>> Hi,
>>
>> We have a function that does not used an in-parameter, simplified example:
>>
>> void test_unused_string_param_gc(const char* unused)
>> {
>>    // empty
>> }
>>
>> Though when we have calls to this function, the arguments are still put in 
>> the memory, causing unnecessary flash memory usage for 'dead parameters'.
>>
>> Example if having a call (from another file) as
>>
>>       test_unused_string_param_gc("This string is not garbage-collected?");
>>
>> Then this string will still be added to our finally build binary?
>>
>> We compile with -Os, and have tried different flags to try get rid of this 
>> dead parameter data,
>> do anyone know if this is the expected behavior and why? Or if we are 
>> missing any optimization flags, like LTO etc?
>
> Without LTO there is no way the unused parameter can be elided on the
> caller side so yes, try enabling LTO.
>

or, if possible, make the function static.

Martin

Reply via email to