[PATCH] D12834: add gcc abi_tag support

Stefan Bühler via cfe-commits cfe-commits at lists.llvm.org
Sun Sep 27 05:22:13 PDT 2015


stbuehler added a comment.

Just for the record: substitution doesn't work yet (it should add available tags from the substitution, but doesn't).

This example shows the difference: my patch mangles `T::F()` as `N::Name(N::__test::Result)::T::F[abi:test](N::__test::Result)`, but actually shouldn't emit the abi tag.

  namespace N {
    inline namespace __test
    __attribute__((abi_tag("test"))) {
      struct Result {
        const char *str;
      };
    }
  
    inline Result Name(Result p1) {
      struct T {
        Result F(Result p2) {
          struct S {
            Result F(Result p3) {
              static Result s3 = p3;
              return s3;
            }
          };
          static Result s2 = S().F(p2);
          return s2;
        }
      };
      static Result s1 = T().F(p1);
      return s1;
    }
  
    void F() {
      // instantiate Name()
      Name(Result());
    }
  }


Repository:
  rL LLVM

http://reviews.llvm.org/D12834





More information about the cfe-commits mailing list