Redundant code explained

In computer programming, redundant code is source code or compiled code in a computer program that is unnecessary, such as:

A NOP instruction might be considered to be redundant code that has been explicitly inserted to pad out the instruction stream or introduce a time delay, for example to create a timing loop by "wasting time". Identifiers that are declared, but never referenced, are termed redundant declarations.

Examples

The following examples are in C.

int foo(int iX)

The second iX*2 expression is redundant code and can be replaced by a reference to the variable iY. Alternatively, the definition int iY = iX*2 can instead be removed.

Consider:

  1. define min(A,B) ((A)<(B)?(A):(B))

int shorter_magnitude(int u1, int v1, int u2, int v2)

As a consequence of using the C preprocessor, the compiler will only see the expanded form:

int shorter_magnitude(int u1, int v1, int u2, int v2)

Because the use of min/max macros is very common, modern compilers are programmed to recognize and eliminate redundancy caused by their use.

There is no redundancy, however, in the following code:

  1. define max(A,B) ((A)>(B)?(A):(B))

int random(int cutoff, int range)

If the initial call to rand, modulo range, is greater than or equal to cutoff, rand will be called a second time for a second computation of rand%range, which may result in a value that is actually lower than the cutoff. The max macro thus may not produce the intended behavior for this function.

See also

Notes and References

  1. http://doi.acm.org/10.1145/349214.349233 Debray, S. K., Evans, W., Muth, R., and De Sutter, B. 2000. Compiler techniques for code compaction. ACM Trans. Program. Lang. Syst. 22, 2 (Mar. 2000), 378–415.