[vlc-devel] [PATCH 1/6] os2: implement vlc_once()

Rémi Denis-Courmont remi at remlab.net
Sun Apr 8 09:40:25 CEST 2018


Le sunnuntaina 8. huhtikuuta 2018, 10.01.32 EEST KO Myung-Hun a écrit :
> >> And compiler cannot see the internal of cb().
> > 
> > With LTO and IPA combined, a compiler can propagate vlc_CPU_init as the cb
> > value into vlc_once() from vlc_CPU().
> 
> Then, are you saying that with them, compiler can reorder a call to
> function pointer and others ?

The compiler can do *anything* as long as it does not contradict the 
observable side effects.

> > Not that it matters much. The problem is not a lack of release fence.
> > Unlocking the mutex provides a release fence. The problem is the lack fo
> > acquire fence before reading the flag.
> 
> I'm saying that acquire fence is not necessary in this case, especially
> on x86 because x86 guarantees "Writes by a single processor are observed
> in the same order by all processors" in Intel Manual Vol 3A 8.2.2.

You still need a compiler-level acquire fence to ensure the load instruction 
actually happens.

-- 
雷米‧德尼-库尔蒙
https://www.remlab.net/





More information about the vlc-devel mailing list