On 2023-10-24 18:41, Qing Zhao wrote:
On Oct 24, 2023, at 5:03 PM, Siddhesh Poyarekar <siddh...@gotplt.org> wrote:
On 2023-10-24 16:30, Qing Zhao wrote:
Situation 2: With O0, the routine “get_size_from” was NOT inlined into “foo”,
therefore, the call to __bdos is Not in the same routine as the instantiation
of the object, As a result, the TYPE info and the attached counted_by info of
the object can NOT be USED by the __bdos call.
But __bos/__bdos are barely useful without optimization; you need a minimum of
-O1. You're right that if the call is never inlined then we don't care because
the __bdos call does not get expanded to obj->size.
However, the point of situation 2 is that the TYPE info cannot be used by the
__bdos call *only for a while* (i.e. until the call gets inlined) and that
window is an opportunity for the reordering/DSE to break things.
The main point of situation 2 I tried made: there are situations where
obj->size is not used at all by the __bdos, marking it as volatile is too
conservative, unnecessarily prevent useful optimizations from happening. -:)
Yes, that's the tradeoff. However, maybe this is the point where Kees
jumps in and say the kernel doesn't really care as much or something
like that :)
Sid