r246985 - Compute and preserve alignment more faithfully in IR-generation.

Joerg Sonnenberger via cfe-commits cfe-commits at lists.llvm.org
Sun Sep 27 17:56:45 PDT 2015


On Tue, Sep 08, 2015 at 08:06:00AM -0000, John McCall via cfe-commits wrote:
> Author: rjmccall
> Date: Tue Sep  8 03:05:57 2015
> New Revision: 246985
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=246985&view=rev
> Log:
> Compute and preserve alignment more faithfully in IR-generation.

This seems to introduce an access-beyond-end on the attached input. Just
-c should be enough to reproduce.

Joerg
-------------- next part --------------
struct A {
  void operator delete(void *, void *);
};
void *operator new(unsigned long, void *);
struct B {
  static B create() { new (0) A; }
};
class C {
protected:
  template <typename Deleter> void internalConstruct(int *, Deleter) {
    B::create;
  }
  template <typename Deleter> C(int *p1, Deleter p2) {
    internalConstruct(p1, p2);
  }
};

class D : C {
public:
  template <typename Deleter> D(int *p1, Deleter p2) : C(p1, p2) {}
};
void doDeleteLater() { D(new int, doDeleteLater); }


More information about the cfe-commits mailing list