Compiler crasher #28870 times out?

At some point in the last couple months (I've been distracted by a newborn), known compiler crasher 28870 started timing out rather than crashing quickly on my Fedora Linux box. What's the right way to fix this? For whatever it may be worth, the test crashes once the machine runs out of memory, so if you have a lot of memory, the expected crash takes a while to occur.

EDIT – For whatever it may be worth, AssociatedTypeDecl::getAssociatedTypeAnchor() is recursing off the end of the stack. Perhaps the llvm::TinyPtrVector it is returning is now doing a heap allocation as a side effect of some other change?

Interesting. Some ideas for how to address this:

  • Teach LLVM's not to set a (reasonable) ulimit when there's an expected crash.
  • Teach Swift's lit setup to do the same (either with a lit.local.cfg in the compiler_crashers directory, or even across the whole test suite)
  • Add some assertion to getAssociatedTypeAnchor that figures out if it's recursing too deeply. (Or if there already is one, mark the test as "REQUIRES: asserts".)
  • Just mark the test as unsupported. (This one seems like a bad idea to me.)
  • Actually fix the issue. :-)

cc @rudkx and @xedin too