// RUN: %clang_cc1 "-triple" "arm64-windows" "-funwind-tables=2" "-fms-compatibility" -emit-llvm -O1 -disable-llvm-passes %s -o - | FileCheck %s
// NOTE: we're passing "-O1 -disable-llvm-passes" to avoid adding optnone and noinline everywhere.

# 0 "" 3
#define a(b, c) d() & b
#define f(c) a(e(0, 0, #c).b(), )

struct e {
  e(int, int, char *);
  int b();
};

struct d {
  void operator&(int);
};

struct h;

struct i {
  h *operator->();
  h &operator*() { f(); }
};

typedef int g;

struct h {
  void ad();
};

g aq(h j, g k, int, int) {
  if (k)
    return;
  j.ad();
}

// Check for the uwtable attribute on the filter funclet.
// CHECK: define internal i32 @"?filt$0@0@at@@"(i8* %exception_pointers, i8* %frame_pointer) #[[MD:[0-9]+]]
// CHECK: attributes #[[MD]] = { nounwind uwtable

void at() {
  i ar;

  __try {
    ar->ad();
  } __except (aq(*ar, _exception_code(), 0, 0)) {
  }

}
