Difference between revisions of "Testing removal of ifdef or configure checks"

(#ifdef removal is risky)
(show hints on using it)
 
Line 8: Line 8:
  
 
[[File:Gcc-E.py.txt]] is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like [https://www.samba.org/ftp/paulus/ dirdiff]
 
[[File:Gcc-E.py.txt]] is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like [https://www.samba.org/ftp/paulus/ dirdiff]
 +
 +
===Getting the results===
 +
 +
git checkout origin/master
 +
git clean -x -f -d
 +
CC="gcc -E" ./configure.developer && make -j
 +
mv bin /tmp/master-bin
 +
 +
git checkout newbranch
 +
git clean -x -f -d
 +
CC="gcc -E" ./configure.developer && make -j
 +
 +
===Reading the results===
 +
dirdiff /tmp/master-bin bin
 +
or
 +
diff -ur --ignore-matching-lines="^#" /tmp/master-bin/ bin> /tmp/diff

Latest revision as of 02:30, 27 April 2019

#ifdef removal is risky

Large-scale removal of "unused" ifdef or the configure checks that produce #defines is an important, but risky task.

It is difficult (and time consuming) to prove that the code is unused and that there is no change to the compiled output.

A script to help

File:Gcc-E.py.txt is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like dirdiff

Getting the results

git checkout origin/master
git clean -x -f -d
CC="gcc -E" ./configure.developer && make -j
mv bin /tmp/master-bin

git checkout newbranch
git clean -x -f -d
CC="gcc -E" ./configure.developer && make -j

Reading the results

dirdiff /tmp/master-bin bin

or

diff -ur --ignore-matching-lines="^#" /tmp/master-bin/ bin> /tmp/diff