[llvm-dev] Question about changes to 'SelectionDAGISel.h'

Ahmed Bougacha via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 28 09:01:48 PDT 2016


On Tue, Jun 28, 2016 at 8:53 AM, Martin J. O'Riordan via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> It occurred to me that instead of the various breakout ‘Select*’ functions
> returning the ‘SDNode*’ result, maybe I should be calling:
>
>
>
>   ReplaceNode(N, newValue);
>
>   return;
>
> or:
>
>   SelectCode(N);
>
>   return;
>
>
>
> Perhaps?

Yes, I think the core difference is that Select() - not its caller -
now does the replacement, so there's nothing to return.

This is actually mentioned in the release notes (kudos to Justin!):

    SelectionDAGISel::Select now returns void. Out of tree targets
will need to be updated to replace the argument node and remove any
dead nodes in cases where they currently return an SDNode * from this
interface.

http://llvm.org/docs/ReleaseNotes.html

You can look at the changes to the various in-tree targets between
r268693 and r270454 (e.g., r269144 for x86).

-Ahmed

>
>
>             MartinO
>
>
>
> From: Martin J. O'Riordan [mailto:martin.oriordan at movidius.com]
> Sent: 28 June 2016 16:49
> To: 'LLVM Developers' <llvm-dev at lists.llvm.org>
> Subject: Question about changes to 'SelectionDAGISel.h'
>
>
>
> Although I would like to track the LLVM head revisions regularly,
> unfortunately I only get the opportunity every couple of months or even
> every 6 month with a full release.
>
>
>
> This time I am updating from revision #262824 (8th March) so more than 3
> months have elapsed.  For the most part I have completed the changes I need
> to make, but I’m stuck on one change that is more significant than it
> appears.
>
>
>
> In the March #262824 revision ‘SelectionDAGISel’ declared the function
> ‘Select’ as:
>
>
>
>     SDNode *Select(SDNode *N) = 0;
>
>
>
> But now it is:
>
>
>
>     void Select(SDNode *N) = 0;
>
>
>
> The problem is that we have a number of places where we construct DAGs using
> the returned ‘SDNode*’ from explicit calls to ‘Select’ and I am wondering
> what is the best design approach for me to fix this?  This is old code, so
> the architectural changes that lead to the return type for ‘Select’ being
> changed have probably been long coming, but I was unaware of it.  Should I
> be using ‘SelectCode’ instead for example?  Or is there a good reference
> target I should examine to see how they adapted?
>
>
>
> Thanks,
>
>
>
>             MartinO
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>


More information about the llvm-dev mailing list