mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 11:35:51 -04:00
[libcxxabi] Add a test for invalid assumptions on the alignment of exceptions
rdar://problem/49864414 llvm-svn: 361039
This commit is contained in:
parent
279314e81b
commit
e92a9c99d6
34
libcxxabi/test/exception_object_alignment.2.pass.cpp
Normal file
34
libcxxabi/test/exception_object_alignment.2.pass.cpp
Normal 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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user