Fix T81077 id_management test on macOS
This looks like a optimizer bug where it makes wrong assumptions. The code inside lib_id_delete:264 on rBafd13710b897cc1c11b `for (id = last_remapped_id->next; id; id = id->next) {..}` is not executed in release/relwithdebinfo builds. This can be "fixed" by several ways: - Adding a line that prints the `last_remapped_id->name` right before the said for-loop starts. - Turning off optimization for the whole function `id_delete`: `#pragma clang optimize off/on` Ray Molenkamp - Marking `last_remapped_id` volatile. Julian Eisel - Marking `tagged_deleted_ids` volatile. But it adds a warning when calling `BLI_addtail`: discards volatile qualifier. Discovered by accident. Fix T81077 Reviewed By: mont29 Maniphest Tasks: T81077 Differential Revision: https://developer.blender.org/D9315
This commit is contained in:
parent
4b7abde11d
commit
2ddecfffc3
Notes:
blender-bot
2023-02-14 07:31:32 +01:00
Referenced by commit30ec0753c7
, Revert "Fix T81077 id_management test on macOS" Referenced by commitfc6a1f44d2
, macOS: use -fno-strict-aliasing for all build types. Referenced by issue #81077, Build Bot: MacOS X test fails
|
@ -261,7 +261,9 @@ static void id_delete(Main *bmain, const bool do_tagged_deletion)
|
|||
bool keep_looping = true;
|
||||
while (keep_looping) {
|
||||
ID *id, *id_next;
|
||||
ID *last_remapped_id = tagged_deleted_ids.last;
|
||||
/* Marked volatile to avoid a macOS Clang optimization bug. See T81077.
|
||||
* #last_remapped_id.next is assumed to be NULL by optimizer which is wrong. */
|
||||
volatile ID *last_remapped_id = tagged_deleted_ids.last;
|
||||
keep_looping = false;
|
||||
|
||||
/* First tag and remove from Main all datablocks directly from target lib.
|
||||
|
|
Loading…
Reference in New Issue