[PATCH] D134282: [CGP] Add generic TargetLowering::shouldAlignPointerArgs() implementation

Jake Egan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 21 07:12:38 PST 2023


Jake-Egan added a comment.

It fails with a different assembler error on different platforms (tried on AIX, linux, and mac). No error if you remove the AIX target.

  clang++ -target powerpc64-ibm-aix -c foo.cc



  namespace {
  template <class a, class d> void aa(a, d);
  template <class> struct e;
  class g;
  template <class ac, class = ac, class = g> class h;
  template <class ad, class f> void i(ad *j, ad *k, f l) {
    long a(k - j);
    __builtin_memmove(l, j, a);
    aa(j, l);
  }
  template <class af, class ag, class ah> void ai(af j, ag k, ah l) {
    i(j, k, l);
  }
  template <class aj, class ak> void al(aj j, aj k, ak l) { ai(j, k, l); }
  template <class aj, class am, class ak> ak an(aj j, am k, ak l) {
    al(j, j + k, l);
  }
  template <> struct e<char> {
    static char m(char *j, const char *k, long l) { an(k, l, j); }
  };
  template <class> struct as {
    as(int);
  };
  template <class d> class n : as<int>, as<d> {
  public:
    using au = as;
    using av = as<d>;
    template <class aw, class ax> n(aw, ax) : au(0), av(0) {}
  };
  template <class, class, class> class h {
    n<g> ay;
  
  public:
    h(char *j) : ay(int(), int()) {
      long b;
      o(j, b);
    }
    void o(const char *, int);
  };
  template <class ac, class bc, class bd>
  void h<ac, bc, bd>::o(const char *j, int k) {
    e<char>::m(0, j, k);
  }
  } // namespace
  struct {
    h<int> b;
  } c{"error message"};


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D134282



More information about the llvm-commits mailing list