From 89bb07c2173e7ed18dd0c3a8a335055e55c01492 Mon Sep 17 00:00:00 2001
From: Eric Christopher
The llvm.objectsize intrinsic returns the constant number of bytes - from ptr to the end of the object ptr points to if it + from ptr to the end of the object ptr points to, if it can deduce this at compile time. If there are any side-effects in evaluating the argument or it cannot deduce which objects ptr points to at compile - time the intrinsic returns (size_t) -1 for type 0 - or 1 and (size_t) 0 for type 2 or 3.
+ time, the intrinsic returns i32/i64 -1 for type 0 + or 1 and i32/i64 0 for type 2 or 3.The llvm.objectsize intrinsic takes two arguments. The first - argument is a pointer to the object ptr and an integer type. - type is an integer ranging from 0 to 3. The lsb corresponds to - a return value based on whole objects, the second bit whether or not we - return the maximum or minimum remaining bytes computed.
+ argument is a pointer to the object ptr. The second argument + is an integer type which ranges from 0 to 3. The first bit + corresponds to a return value based on whole objects, and the second bit + whether or not we return the maximum or minimum remaining bytes computed.The llvm.objectsize intrinsic is lowered to either a constant - representing the size of the object concerned or (size_t) -1 if + representing the size of the object concerned or i32/i64 -1 if it cannot be determined at compile time.