[all-commits] [llvm/llvm-project] 17d956: Reapply "[tsan] Don't use `enum __tsan_memory_orde...

Vitaly Buka via All-commits all-commits at lists.llvm.org
Tue Nov 5 11:24:13 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 17d956588a2cc508acf98574f913eaef6d0e1af3
      https://github.com/llvm/llvm-project/commit/17d956588a2cc508acf98574f913eaef6d0e1af3
  Author: Vitaly Buka <vitalybuka at google.com>
  Date:   2024-11-05 (Tue, 05 Nov 2024)

  Changed paths:
    M compiler-rt/include/sanitizer/tsan_interface_atomic.h
    M compiler-rt/lib/tsan/rtl/tsan_interface.h
    M compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp

  Log Message:
  -----------
  Reapply "[tsan] Don't use `enum __tsan_memory_order` in tsan interface"" (#115034)

In C++ it's UB to use undeclared values as enum.
And there is support __ATOMIC_HLE_ACQUIRE and
__ATOMIC_HLE_RELEASE need such values.

So use `int` in TSAN interface, and mask out
irrelevant bits and cast to enum ASAP.

`ThreadSanitizer.cpp` already declare morder parameterd
in these functions as `i32`.

This may looks like a slight change, as we
previously didn't mask out additional bits for `fmo`,
and `NoTsanAtomic` call. But from implementation
it's clear that they are expecting exact enum.


Reverts llvm/llvm-project#115032
Reapply llvm/llvm-project#114724



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list