[llvm-dev] RFC: Splitting <Target>DAGISel.inc into declarations and definitions
Krzysztof Parzyszek via llvm-dev
llvm-dev at lists.llvm.org
Fri Nov 3 07:31:40 PDT 2017
Great! I posted a review: https://reviews.llvm.org/D39596, it includes
the self-cleanup.
-Krzysztof
On 11/3/2017 12:15 AM, Craig Topper wrote:
> This seems reasonable to me.
>
> Though I think we usually make these things self cleaning so the "#undef
> DAGISEL_DECL" should be in the .inc file after its #ifdef.
>
> ~Craig
>
> On Thu, Nov 2, 2017 at 1:12 PM, Krzysztof Parzyszek via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
> Hi,
>
> Currently, TableGen generates all the instruction selection
> functions (in the .inc file) as if they were top-most functions. To
> make them members of their corresponding SelectionDAGISel
> derivative, each target has to include the .inc file directly into
> the body of the class:
>
> --- FooDAGISel.inc ---
> void SelectCode(Node *N) {
> // 1E6 lines of pattern matching code
> }
> ...
> ----------------------
>
> --- FooISelDAGToDAG.cpp ---
> class FooDAGToDAGISel : public SelectionDAGISel {
> #include "FooDAGISel.inc"
> };
> ---------------------------
>
> If someone wanted to put the class definition in a separate header
> file, the large .inc file would need to be included in that header.
> If that someone then wanted to split their .cpp file into smaller
> pieces, each such .cpp would contain these function bodies (which
> would then be needlessly compiled multiple times).
>
>
> What I propose is to have TableGen emit information that would allow
> something like this:
>
> class FooDAGToDAGISel : public SelectionDAGISel {
> #define DAGISEL_DECL
> #include "FooDAGISel.inc"
> #undef DAGISEL_DECL
> };
>
> #define DAGISEL_BODY(FooDAGToDAGISel)
> #include "FooDAGISel.inc"
> #undef DAGISEL_BODY
>
> This would allow only putting member declarations in the class
> definition, and then include the member bodies in a single place.
>
> What does everybody think?
>
> -Krzysztof
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list