[llvm-dev] Is trapping allowed when an add with nsw flag overflows?

Manuel Jacob via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 15 10:28:00 PDT 2016


In our backend, we currently emit add operations that trap on overflow 
if the IR operation has the nsw flag set.  Is this allowed?

According to the documentation about poison values, overflowing a nsw 
add is undefined behavior.  However I didn't find a formal definition of 
undefined behavior in LLVM.  Judging from previous discussions on the 
mailing list, there seems to be a vague line of what LLVM is allowed to 
do in case of undefined behavior.  Is trapping allowed?


More information about the llvm-dev mailing list