const char *Exception_Description(void) {
  return "The `Exception` type provides an interface to the Cello Exception "
         "System. "
         "One instance of this type is created for each `Thread` and stores "
         "the "
         "various bits of data required for the exception system. It can be "
         "retrieved using the `current` function, although not much can be "
         "done "
         "with it."
         "\n\n"
         "Exceptions are available via the `try`, `catch` and `throw` macros. "
         "It is "
         "important that the `catch` part of the exception block is always "
         "evaluated otherwise the internal state of the exception system can "
         "go out "
         "of sync. For this reason please never use `return` inside a `try` "
         "block. "
         "\n\n"
         "The `exception_signals` method can be used to register some "
         "exception to "
         "be thrown for any of the "
         "[standard C "
         "signals](https://en.wikipedia.org/wiki/C_signal_handling)."
         "\n\n"
         "To get the current exception object or message use the "
         "`exception_message` or `exception_object` methods.";
}


x86 assembly (clang, -O0):
<Exception_Description>:
push   %rbp
mov    %rsp,%rbp
lea    0xef5(%rip),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<Exception_Description>:
lea    0xef9(%rip),%rax
ret

LLVM IR (-O0):
@.str = [854 x i8] c"The `Exception` type provides an interface to the Cello Exception System. One instance of this type is created for each `Thread` and stores the various bits of data required for the exception system. It can be retrieved using the `current` function, although not much can be done with it.\0A\0AExceptions are available via the `try`, `catch` and `throw` macros. It is important that the `catch` part of the exception block is always evaluated otherwise the internal state of the exception system can go out of sync. For this reason please never use `return` inside a `try` block. \0A\0AThe `exception_signals` method can be used to register some exception to be thrown for any of the [standard C signals](https://en.wikipedia.org/wiki/C_signal_handling).\0A\0ATo get the current exception object or message use the `exception_message` or `exception_object` methods.\00"
define i8* @Exception_Description() {
ret i8* getelementptr inbounds ([854 x i8], [854 x i8]* @.str, i64 0, i64 0)
}

LLVM IR (-O2):
@.str = [854 x i8] c"The `Exception` type provides an interface to the Cello Exception System. One instance of this type is created for each `Thread` and stores the various bits of data required for the exception system. It can be retrieved using the `current` function, although not much can be done with it.\0A\0AExceptions are available via the `try`, `catch` and `throw` macros. It is important that the `catch` part of the exception block is always evaluated otherwise the internal state of the exception system can go out of sync. For this reason please never use `return` inside a `try` block. \0A\0AThe `exception_signals` method can be used to register some exception to be thrown for any of the [standard C signals](https://en.wikipedia.org/wiki/C_signal_handling).\0A\0ATo get the current exception object or message use the `exception_message` or `exception_object` methods.\00"
define i8* @Exception_Description() {
ret i8* getelementptr inbounds ([854 x i8], [854 x i8]* @.str, i64 0, i64 0)
}