Nullstone Logo

COMPANY
Home
Contacts
Customers
Testimonials

PRODUCTS
Overview
NULLSTONE for C
NULLSTONE for Java
Technical Overview

SUPPORT
Release Notes
Download
PGP Information
Service Report
Write Us

INFORMATION
Performance Results
Glossary of Terms

RELATED LINKS
Compiler Connection
Compiler Jobs

Previous Up Next
Alias Optimization (const qualified)

Const-qualified objects can not be modified, and therefore can not be an alias for an lvalue that is used to explicitly modify an object through assignment.

Example:

In the code fragment below, the address of the object pointed to by p is not known, but q points to a const array, and its members can not be modified. Since p is used to modify an object through assignment, p can not be an alias for q.

    const int const_array[];
    
    void f (int *p, int i)
    {
      int x, y;
      const int *q = &const_array[i];
      x = *q;
      *p = 5;
      y = *q;
      g (x, y);
    }
    

Since p is not an alias for q, the second reference to the object pointed to by q can be eliminated, as shown below.

    const int const_array[];
    
    void f (int *p, int i)
    {
      int x, y;
      const int *q = &const_array[i];
      x = *q;
      *p = 5;
      g (x, x);
    }
    

Notes:

The optimization above is allowed because it is known that q points to a const object. Note that it is not sufficient that q have type pointer to const. In other words, the ANSI C standard permits a pointer of type pointer to const to point to a non-const object, in which case this optimization could not be performed without more information.

Although supported by a few compilers, this optimization is not very common.

© 1990-2012 Nullstone Corporation. All Rights Reserved.