Skip to content

dependencyCache.h invalid call to std::bool::store() #4016

@jfpanisset

Description

@jfpanisset

In pxr/exec/ef/dependencyCache.h :

class _Entry {
public:
...
    void Invalidate() {
        valid.store(std::memory_order_relaxed);
    }
...
    // Set to false when the entry is fully invalid.
    std::atomic<bool> valid;
};

gcc 14.2 complains of no matching signature when Invalidate() calls valid.store(std::memory_order_relaxed) since according to:

https://en.cppreference.com/w/cpp/atomic/atomic/store.html

the signature since C++ 11 is:

void store( T desired, std::memory_order order = std::memory_order_seq_cst)

Changing Invalidate() to:

    void Invalidate() {
        valid.store(false, std::memory_order_relaxed);
    }

allows the code to compile, and the comment // Set to false when the entry is fully invalid. seems to indicate that is the correct thing to do, but I know nothing of this code.

Also it seems that dependencyCache.{h,cpp} is only compiled under specific circumstances, I'm switching my build hardness from an ad-hoc Bash script to a Conan recipe, but I'm not clear which specific option I am passing to cmake which is forcing this code to get compiled.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions