> 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. -:) Qing > > Thanks. > Sid