[PATCH] D92800: [Clang] Make nomerge attribute a function attribute as well as a statement attribute.

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 10 11:40:18 PST 2020


rnk added a comment.

Nice, that wasn't too difficult. I had some suggestions for improving the test case, and I'd like to hear from Aaron.



================
Comment at: clang/test/CodeGen/attr-nomerge.cpp:8
+  [[clang::nomerge]] void f();
+  [[clang::nomerge]] virtual void g();
+  [[clang::nomerge]] static void f1();
----------------
Hm, virtual functions, there's something worth thinking about. In this case, the attribute must appear on the call site if we want it to work as the user expects. I don't see the indirect call site for the virtual call in the IR below. I think it's worth testing for that. Consider taking `A*` and `B*` parameters to defeat any frontend devirtualization optimizations.


================
Comment at: clang/test/CodeGen/attr-nomerge.cpp:17
+
+[[clang::nomerge]] bool bar() {
+  return true;
----------------
I would leave this declaration as it was, so that all the statement attribute test cases you wrote below remain as they were, and the attribute continues to appear at the call site.

The `f` declaration below gives you coverage of the free function declaration case.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92800/new/

https://reviews.llvm.org/D92800



More information about the llvm-commits mailing list