Using the restrict keyword improves performance as shown in the previous topic.
However, there are issues if the keyword is used inappropriately. The __restrict child pointers must be used in a different block-level scope than the parent pointers,
such as pointer p and q as shown in the following example.
Working Example 1
Use of parent pointers in the same scope might break the __restrict contract which produces an undefined
behavior, such as pointers p and q in the following example.
Working Example 2
This can also happen during the load
operation, as shown in the green text (return *p;) in the following
figure.
The undefined behavior occurs when the restrict pointers are used within the
same scope, such as pointers p and q in the following example.
Working Example with Inline Function
The following code shows the working inline function call, in which pointer
p and pointer q are used in different scopes.
The undefined behavior occurs when the restrict pointers are used within the
same scope, such as pointers p and q in the following example.