11deeedb6808c6a2aa24de6317960199f04012345David Blaikie// RUN: %clang_cc1 %s -triple x86_64-none-linux-gnu -emit-llvm -fcxx-exceptions -fexceptions -std=c++11 -o - | FileCheck %s
2ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// PR13359
3ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman
4ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedmanstruct X {
5ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman  ~X();
6ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman};
7ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedmanstruct Error {
8ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman  Error(const X&) noexcept;
9ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman};
10ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman
11ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedmanvoid f() {
12ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman  try {
13ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman    throw Error(X());
14ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman  } catch (...) { }
15ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman}
16ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman
1793ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z1fv
18ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// CHECK: call void @_ZN5ErrorC1ERK1X
19ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// CHECK: invoke void @__cxa_throw
20ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// CHECK: landingpad
21ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// CHECK: call void @_ZN1XD1Ev
22ea66f9f9e17d619d617885e26adc1530cec7c0fdEli Friedman// CHECK-NOT: __cxa_free_exception
23