Like compiler intrinsics, compiler directives are crucial programming elements.
void *memcpy(void * restrict s1, void * restrict s2, size_t n);
By specifying s1 and s2 as pointers that are restricted, the programmer is specifying that the source and destination objects (for the memory copy) do not overlap.
int __builtin_expect(int exp, int value)
returns the result of evaluating exp , and means that the programmer expects exp to equal value . The value can be a constant for compile-time prediction, or a variable used for run-time prediction.
float factor __attribute__((aligned (16)); //aligns “factor” to a quadword
_align_hint(ptr, base, offset)
informs the compiler that the pointer, ptr , points to data with a base alignment of base , with a byte offset from the base alignment of offset . The base alignment must be a power of two. Giving 0 as the base alignment implies that the pointer has no known alignment. The offset must be less than the base, or, zero. The _align_hint directive should not be used with pointers that are not naturally aligned.