add-clang-nomerge-attribute-to-CheckError.patch 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From 209bf5cdfc095516ba9e391dd52ce16a74114ae6 Mon Sep 17 00:00:00 2001
  2. From: Zequan Wu <zequanwu@google.com>
  3. Date: Wed, 10 Feb 2021 03:26:00 +0000
  4. Subject: [PATCH] Reland "Add [[clang::nomerge]] attribute to ~CheckError()."
  5. This is a reland of 8860253376c38c090d585bda4b20b801e3aa3ce3
  6. Original change's description:
  7. > Add [[clang::nomerge]] attribute to ~CheckError().
  8. >
  9. > To disable merging multiple ~CheckError() destructor for accurate crash logs.
  10. >
  11. > Bug: 1153188
  12. > Change-Id: If6d153661667a63f13b645f6d284eb3d5ea3a300
  13. > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2611331
  14. > Commit-Queue: Nico Weber <thakis@chromium.org>
  15. > Auto-Submit: Zequan Wu <zequanwu@google.com>
  16. > Reviewed-by: Nico Weber <thakis@chromium.org>
  17. > Cr-Commit-Position: refs/heads/master@{#844989}
  18. Bug: 1153188
  19. Change-Id: I303c5ff9fb88f7a30663400622b327a910d0b108
  20. Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2686331
  21. Reviewed-by: Nico Weber <thakis@chromium.org>
  22. Commit-Queue: Nico Weber <thakis@chromium.org>
  23. Commit-Queue: Zequan Wu <zequanwu@google.com>
  24. Cr-Commit-Position: refs/heads/master@{#852453}
  25. GitOrigin-RevId: 9909f146b28d56c9c0411329a056ed959b33f76a
  26. ---
  27. check.h | 2 +-
  28. compiler_specific.h | 7 +++++++
  29. 2 files changed, 8 insertions(+), 1 deletion(-)
  30. diff --git a/check.h b/check.h
  31. index c94ab68db..17048e455 100644
  32. --- a/check.h
  33. +++ b/check.h
  34. @@ -85,7 +85,7 @@ class BASE_EXPORT CheckError {
  35. // Stream for adding optional details to the error message.
  36. std::ostream& stream();
  37. - ~CheckError();
  38. + NOMERGE ~CheckError();
  39. CheckError(const CheckError& other) = delete;
  40. CheckError& operator=(const CheckError& other) = delete;
  41. diff --git a/compiler_specific.h b/compiler_specific.h
  42. index fa961b0ce..14a5d6870 100644
  43. --- a/compiler_specific.h
  44. +++ b/compiler_specific.h
  45. @@ -332,4 +332,11 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) {
  46. #endif // defined(__clang_analyzer__)
  47. +// Use nomerge attribute to disable optimization of merging multiple same calls.
  48. +#if defined(__clang__) && __has_attribute(nomerge) && !defined(OS_CHROMEOS)
  49. +#define NOMERGE [[clang::nomerge]]
  50. +#else
  51. +#define NOMERGE
  52. +#endif
  53. +
  54. #endif // BASE_COMPILER_SPECIFIC_H_