On Wed, Feb 25, 2015 at 11:59 AM, Patrick Baggett <[email protected]> wrote: >> If code like >> >> x = *a; >> pthread_mutex_lock or unlock or __memory_barrier() >> y = *a; >> >> doesn't cause a to get loaded twice, then the compiler's in serious >> trouble. Basically functions like pthread_mutex_lock imply that all >> memory is changed to the compiler, and thus need to be reloaded. >> > Well, I've said before and I might be alone, but I disagree with you. The > compiler is under no requirement to reload (*a) because a lock was changed. > It does, but it doesn't have to. It's fine if you guys don't want to change > it. It may never be a problem with gcc. > > This is the definition of pthread_mutex_lock() in glibc. There aren't any > magic hints that this invalidates memory: > > extern int pthread_mutex_lock (pthread_mutex_t *__mutex) > __THROWNL __nonnull ((1)); > > THOWNL is attribute((nothrow)).
Hm, this is actually a little worrying. Maarten, thoughts? I would have assumed there'd be a __attribute__((some_magic_thing)) in there. -ilia _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
