diff options
| author | Pekka Enberg <penberg@kernel.org> | 2011-08-30 18:00:25 +0300 |
|---|---|---|
| committer | Pekka Enberg <penberg@kernel.org> | 2011-08-30 18:00:25 +0300 |
| commit | 57890887bc122c0c9bb4977d5df9fdfa128ac812 (patch) | |
| tree | 3ec3b43be978863ff17000d3c8cd1bd98c7f3b25 /sparsec | |
| parent | 2dea6f7fb07cd18255cf1d73079638dc96bdd08b (diff) | |
| download | sparse-dev-57890887bc122c0c9bb4977d5df9fdfa128ac812.tar.gz | |
sparse, llvm: Improve sparsec front-end
This patch improves 'sparsec' so that things like
./sparsec hello.c
./sparsec hello.c -o hello
work like with GCC.
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'sparsec')
| -rwxr-xr-x | sparsec | 29 |
1 files changed, 21 insertions, 8 deletions
@@ -3,19 +3,23 @@ # GCC compatible C compiler based on Sparse LLVM SPARSEOPTS="" -ASOPTS="" DIRNAME=`dirname $0` -use_gcc=1 +NEED_LINK=1 + +if [ $# -eq 0 ]; then + echo "`basename $0`: no input files" + exit 1 +fi while [ $# -gt 0 ]; do case $1 in '-o') - ASOPTS=$ASOPTS"-o "$2" " + OUTFILE=$2 shift ;; '-c') - use_gcc=0 + NEED_LINK=0 ;; *) SPARSEOPTS="$SPARSEOPTS $1 " ;; @@ -23,10 +27,19 @@ while [ $# -gt 0 ]; do shift done -if [ $use_gcc -eq 1 ]; then - echo "Unsupported options, falling back to GCC..." - gcc $ASOPTS $SPARSEOPTS +TMPFILE=`mktemp -t tmp.XXXXXX`".o" + +$DIRNAME/sparse-llvm $SPARSEOPTS | llc | as -o $TMPFILE +if [ $NEED_LINK -eq 1 ]; then + if [ -z $OUTFILE ]; then + OUTFILE=a.out + fi + gcc $TMPFILE -o $OUTFILE else - $DIRNAME/sparse-llvm $SPARSEOPTS | llc | as $ASOPTS + if [ -z $OUTFILE ]; then + echo "`basename $0`: no output file" + exit 1 + fi + mv $TMPFILE $OUTFILE fi |
