[libcxxabi] Add a test for invalid assumptions on the alignment of exceptions

rdar://problem/49864414

llvm-svn: 361039
This commit is contained in:
Louis Dionne 2019-05-17 14:53:29 +00:00
parent 279314e81b
commit e92a9c99d6
1 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,34 @@
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// UNSUPPORTED: libcxxabi-no-exceptions
// This test checks that the compiler does not make incorrect assumptions
// about the alignment of the exception (only in that specific case, of
// course).
//
// There was a bug where Clang would emit a call to memset assuming a 16-byte
// aligned exception even when back-deploying to older Darwin systems where
// exceptions are 8-byte aligned, which caused a segfault on those systems.
struct exception {
exception() : x(0) { }
virtual ~exception() { }
int x;
};
struct foo : exception { };
int main() {
try {
throw foo();
} catch (...) {
}
return 0;
}