[libcxx-commits] [PATCH] D82490: [libcxx] Put clang::trivial_abi on std::unique_ptr

Vy Nguyen via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jul 14 08:09:56 PDT 2020


oontvoo added a comment.

> We'll need to add // UNSUPPORTED: clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10 on the tests with a short comment explaining there was a segfault.

Do we also need to document more specifically what the breakages might be?

Found another crash:

  in void clang::CodeGen::CodeGenFunction::EmitAggregateCopy(clang::CodeGen::LValue, clang::CodeGen::LValue, clang::QualType, AggValueSlot::Overlap_t, bool): (Record->hasTrivialCopyConstructor() || Record->hasTrivialCopyAssignment() || Record->hasTrivialMoveConstructor() || Record->hasTrivialMoveAssignment() || Record->isUnion()) && "Trying to aggregate-copy a type without a trivial copy/move " "constructor or assignment operator"
  
  
      @     0x561f6da01ac6  __assert_fail
      @     0x561f69be8e01  clang::CodeGen::CodeGenFunction::EmitAggregateCopy()
      @     0x561f69c73a60  clang::CodeGen::CodeGenFunction::EmitReturnOfRValue()
      @     0x561f69ce03ad  clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk()
      @     0x561f69ce0c6d  clang::CodeGen::CodeGenFunction::generateThunk()
      @     0x561f69ce11f6  clang::CodeGen::CodeGenVTables::maybeEmitThunk()
      @     0x561f69ce1614  clang::CodeGen::CodeGenVTables::EmitThunks()

With

  #include <memory>
  
  class DataClass {
   public:
    DataClass();
    ~DataClass();
  
    // No copy or assign
    DataClass(const DataClass&) = delete;
    DataClass& operator=(const DataClass&) = delete;
  };
  
  class AInterface {
   public:
    AInterface() {}
    virtual ~AInterface(){};
    virtual int root_path() const = 0;
  };
  
  class BInterface {
   public:
    virtual ~BInterface(){};
    virtual std::shared_ptr<DataClass> sharable_data() = 0;
  };
  
  class Child : public AInterface, public BInterface {
   public:
    std::shared_ptr<DataClass> sharable_data() override;
  
  };
  
  std::shared_ptr<DataClass> Child::sharable_data() {
    return std::shared_ptr<DataClass>(nullptr);
  }



In D82490#2150376 <https://reviews.llvm.org/D82490#2150376>, @ldionne wrote:

> We'll need to add `// UNSUPPORTED: clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10` on the tests with a short comment explaining there was a segfault.





Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82490/new/

https://reviews.llvm.org/D82490





More information about the libcxx-commits mailing list