Opened 11 years ago

Closed 11 years ago

#41548 closed defect (fixed)

llvm-3.4 @3.4-r193941: ‘class std::vector<llvm::SDValue, std::allocator<llvm::SDValue> >’ has no member named ‘data’

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: jeremyhu (Jeremy Huddleston Sequoia)
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: Cc:
Port: llvm-3.4

Description

llvm-3.4 fails to build on Leopard i386:

SIISelLowering.cpp:1139: error: ‘class std::vector<llvm::SDValue, std::allocator<llvm::SDValue> >’ has no member named ‘data’

I'm trying to install vigra, which blacklists compilers older than clang-3.4.

Attachments (2)

main.log.bz2 (115.3 KB) - added by ryandesign (Ryan Carsten Schmidt) 11 years ago.
Portfile.patch (1.0 KB) - added by jeremyhu (Jeremy Huddleston Sequoia) 11 years ago.
Untested patch to disable R600 on Leopard

Download all attachments as: .zip

Change History (9)

Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log.bz2 added

comment:1 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

We could just disable R600 on Leopard for a short term fix.

comment:2 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Introduced in:

commit 84a775d8e3d5a3765e01db4b454f849ed8be99be
Author: Christian Konig <christian.koenig@amd.com>
Date:   Wed Apr 10 08:39:08 2013 +0000

    R600/SI: adjust writemask to only the used components
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179165 91177308-0d34-0410-b5e6-96231b3b80d8

comment:3 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Email sent to committer and llvmdev:

Hi Christian,

Ryan just reported to me that llvm-3.4 is no longer building on OS X Leopard (https://trac.macports.org/ticket/41548).  It seems the issue is with a commit that you made back in April (referenced below) which added this to SIISelLowering.cpp:

  // Adjust the writemask in the node
  std::vector<SDValue> Ops;
  Ops.push_back(DAG.getTargetConstant(NewDmask, MVT::i32));
  for (unsigned i = 1, e = Node->getNumOperands(); i != e; ++i)
    Ops.push_back(Node->getOperand(i));
  Node = (MachineSDNode*)DAG.UpdateNodeOperands(Node, Ops.data(), Ops.size());

That fails with Leopard's libstdc++ STL which does not a data method for std::vector.  This method was added in C++11:
http://www.cplusplus.com/reference/vector/vector/

Is llvm-3.4 now requiring a C++11 runtime?  If not, can we solve this a different way?

Thanks,
Jeremy



commit 84a775d8e3d5a3765e01db4b454f849ed8be99be
Author: Christian Konig <christian.koenig@amd.com>
Date:   Wed Apr 10 08:39:08 2013 +0000

    R600/SI: adjust writemask to only the used components
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179165 91177308-0d34-0410-b5e6-96231b3b80d8

Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Attachment: Portfile.patch added

Untested patch to disable R600 on Leopard

comment:4 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Ryan, can you give that patch a try?

comment:5 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Thanks; now it fails as clang-3.3 does in #41322.

comment:6 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

r113945, leaving open to track real fix.

comment:7 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Resolution: fixed
Status: newclosed

3.5 requires C++11, so there's no real point in keeping this open.

Note: See TracTickets for help on using tickets.