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

Martin J. O'Riordan via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 28 08:53:39 PDT 2016


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?

 

            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

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160628/2895fbb7/attachment.html>


More information about the llvm-dev mailing list