If I have a static local variable or thread_local local variable that is within an inline function that is defined in different translation units, in the final program are they
Yes, it's always the same object. By [dcl.fct.spec]/4:
An
inlinefunction with external linkage shall have the same address in all translation units. Astaticlocal variable in anextern inlinefunction always refers to the same object. A type defined within the body of anextern inlinefunction is the same type in every translation unit.