It's not portable enough to let me take IR generated for my x86 laptop and run it on my arm board, in general, even though both platforms are ILP32, little-endian, and running the same OS.
Yes, but this is a problem with the source language and/or the host system libraries, not with LLVM IR itself. There is a broad domain of applications for which it is portable.
"pi is a lie" and "pi is wrong" are incredibly disingenuous slogans. I would be really excited about this site if it weren't for these sensationalist remarks at the top. It's sad, because their main content is all about mathematical reasoning, which overall they do a fine job presenting.
pi is not a lie. It's not part of some conspiracy theory among math elites to mislead the masses. It's not about math bureaucrats refusing to admit they were wrong. Everything they told you about pi is true (or it isn't, but in that case it's not true of tau either). pi and tau are really just two different notations for the same concept. Only perhaps one is more elegant and convenient than the other, making it more fundamental in some mystical way (and perhaps preferable if you ever need to convince visiting aliens that you are intelligent).
Synchronous exceptions are debatable. For example, a library function throwing an exception may require its callers to use "finally" clauses (or similar constructs in other languages) in order to maintain Exception Safety.
Also, a common property of "pure" functions is that it doesn't matter what order you call them in. But if you reorder calls to functions which can throw exceptions, you may get different results.
Asynchronous exceptions on the other hand are usually fine. For example, square-root library library functions aren't defined in terms of how much stack space is available on the machine; they're defined in terms of their argument.
Systems which have asynchronous exceptions ideally permit programs to handle them with code at carefully chosen places, rather than code spread around everywhere.