[llvm-commits] [llvm] r152613 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAG.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp

NAKAMURA Takumi geek4civic at gmail.com
Thu Mar 15 17:08:08 PDT 2012


Bill, reverted in r152877, excuse me.

...Takumi

2012/3/16 Bill Wendling <isanbard at gmail.com>:
> On Mar 15, 2012, at 3:35 PM, NAKAMURA Takumi <geek4civic at gmail.com> wrote:
>
>> 2012/3/13 Bill Wendling <isanbard at gmail.com>:
>>> Author: void
>>> Date: Tue Mar 13 00:51:56 2012
>>> New Revision: 152613
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=152613&view=rev
>>> Log:
>>> Inline the d'tor and add an anchor instead.
>>>
>>> Modified:
>>>    llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
>>>    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>>>
>>> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h?rev=152613&r1=152612&r2=152613&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/CodeGen/SelectionDAG.h (original)
>>> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAG.h Tue Mar 13 00:51:56 2012
>>> @@ -820,8 +820,9 @@
>>>   /// the DAG can optionally implement this interface.  This allows the clients
>>>   /// to handle the various sorts of updates that happen.
>>>   class DAGUpdateListener {
>>> +    virtual void anchor();
>>>   public:
>>> -    virtual ~DAGUpdateListener();
>>> +    virtual ~DAGUpdateListener() {}
>>>
>>>     /// NodeDeleted - The node N that was deleted and, if E is not null, an
>>>     /// equivalent node E that replaced it.
>>
>> Bill, it is miscompiled by g++-4.4 (I saw in 4.4.4 and 4.4.6)
>> Any idea? Could I revert yours?
>>
> Sure.
>
> -bw
>
>
>> ...Takumi
>>
>> // Small testcase
>> class DAGUpdateListener {
>> public:
>>  virtual void vvv() = 0;
>>  virtual ~DAGUpdateListener() {}
>> };
>>
>> class ISelUpdater: public DAGUpdateListener {
>> public:
>>  void vvv() {}
>> };
>>
>> extern void bar(DAGUpdateListener& q);
>>
>> static inline void ReplaceUses() {
>>  ISelUpdater q;
>>  bar(q);
>> }
>>
>> void MSP430SelectIndexedBinOp() {
>>  ReplaceUses();
>>  ReplaceUses(); // It sets base class's vtable to 2nd ISU
>> }
>>
>>
>> _Z24MSP430SelectIndexedBinOpv:
>>        pushq   %rbx
>>        subq    $16, %rsp
>>        movq    %rsp, %rdi
>>        movq    $_ZTV11ISelUpdater+16, (%rsp)
>>        call    _Z3barR17DAGUpdateListener
>>        movq    %rsp, %rdi
>>        movq    $_ZTV17DAGUpdateListener+16, (%rsp) //// IMPOSSIBLE!
>>        call    _Z3barR17DAGUpdateListener
>>        addq    $16, %rsp
>>        popq    %rbx
>>        ret




More information about the llvm-commits mailing list