[llvm-commits] [test-suite] r133276 - in /test-suite/trunk: FindMissingLineNo.py PrintLineNo.sh TEST.lineinfo.Makefile lineinfo.xfail
Devang Patel
dpatel at apple.com
Fri Jun 17 11:32:01 PDT 2011
Author: dpatel
Date: Fri Jun 17 13:32:01 2011
New Revision: 133276
URL: http://llvm.org/viewvc/llvm-project?rev=133276&view=rev
Log:
Add little test harness to measure and compare quality of linenumber information preserved by clang. It produces .lineinfo file, for example
.|int main() {
| int Array[100][200], i, j;
+| double sum = 0.0;
|
.| for (i=0; i < 100; i+=2)
.| for (j=0; j < 200; j++)
.| Array[i][j] = 0;
-| test_indvars(Array[0], Array);
|
x| for (i=0; i < 100; i+=2)
x| for (j=0; j < 200; j++)
.| sum += Array[i][j];
|
.| printf("Checksum = %.0lf\n", sum);
|
-| return 0;
.|}
Here,
. in first column indicates both clang and base compiler preserves line number information for this line.
+ in first column indicates only clang preserves line number information for this line.
- in first column indicates neigther clang nor base compiler preserves line number information for this line.
x in first column indicates clang does not preserve line number information for this line.
CC is base compiler and LCC is clang. OPTFLAGS controls the optimization level.
Added:
test-suite/trunk/FindMissingLineNo.py (with props)
test-suite/trunk/PrintLineNo.sh (with props)
test-suite/trunk/TEST.lineinfo.Makefile
test-suite/trunk/lineinfo.xfail
Added: test-suite/trunk/FindMissingLineNo.py
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/FindMissingLineNo.py?rev=133276&view=auto
==============================================================================
--- test-suite/trunk/FindMissingLineNo.py (added)
+++ test-suite/trunk/FindMissingLineNo.py Fri Jun 17 13:32:01 2011
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+
+import os
+import sys
+
+DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".dbg.ml"
+OPT_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".dbg.opt.ml"
+NATIVE_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".native.dbg.ml"
+NATIVE_OPT_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".native.dbg.opt.ml"
+XFAIL_FILE=sys.argv[2] + "/lineinfo.xfail"
+
+REPORT_FILE="Output/" + sys.argv[1] + ".dbg.missing_lines.report.txt"
+
+def read_inputfile(filename, dict):
+ f = open(filename, "r")
+ lines = f.readlines()
+ for l in range(len(lines)):
+ columns = lines[l].split()
+ s = dict.get(columns[0])
+ if s is None:
+ s = set()
+ s.add(columns[1])
+ dict[columns[0]] = s
+ f.close()
+ return
+
+dbg_lines = {}
+read_inputfile(DBG_OUTPUT_FILE, dbg_lines)
+
+dbg_opt_lines = {}
+read_inputfile(OPT_DBG_OUTPUT_FILE, dbg_opt_lines)
+
+native_dbg_lines = {}
+read_inputfile(NATIVE_DBG_OUTPUT_FILE, native_dbg_lines)
+
+native_dbg_opt_lines = {}
+read_inputfile(NATIVE_OPT_DBG_OUTPUT_FILE, native_dbg_opt_lines)
+
+xfailed_lines = {}
+read_inputfile(XFAIL_FILE, xfailed_lines)
+
+dbg_line_items = dbg_lines.items()
+for f in range(len(dbg_line_items)):
+ fname = dbg_line_items[f][0]
+ fset = dbg_line_items[f][1]
+ optset = dbg_opt_lines.get(fname)
+ nativeoptset = native_dbg_opt_lines.get(fname)
+ xfailedset = xfailed_lines.get(os.path.basename(fname))
+ if optset is not None:
+ src = open(fname, "r")
+ srclines = src.readlines()
+ src_output = open("Output/" + sys.argv[1] + ".lineinfo", "w")
+ for l in range(len(srclines)):
+ l1 = l + 1
+ l1s = str(l1)
+ if l1s in fset:
+ if l1s in optset:
+ if nativeoptset is not None and l1s in nativeoptset:
+ src_output.write(".|")
+ else:
+ src_output.write("+|")
+ else:
+ if nativeoptset is not None and l1s in nativeoptset:
+ if xfailedset is not None and l1s in xfailedset:
+ src_output.write(" |")
+ else:
+ src_output.write("x|")
+ else:
+ src_output.write("-|")
+ else:
+ src_output.write(" |")
+ src_output.write(srclines[l])
+ src.close()
+ src_output.close()
Propchange: test-suite/trunk/FindMissingLineNo.py
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/PrintLineNo.sh
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/PrintLineNo.sh?rev=133276&view=auto
==============================================================================
--- test-suite/trunk/PrintLineNo.sh (added)
+++ test-suite/trunk/PrintLineNo.sh Fri Jun 17 13:32:01 2011
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+dwarfdump Output/$1.dbg.dSYM/ -e --debug-line | grep "^0x" | awk '{if ($3) prev=$3; print basename prev," ",$2}' |sort |uniq > Output/$1.dbg.ml;
+dwarfdump Output/$1.dbg.opt.dSYM/ -e --debug-line | grep "^0x" | awk '{if ($3) prev=$3; print basename prev," ",$2}' |sort |uniq > Output/$1.dbg.opt.ml;
+dwarfdump Output/$1.native.dbg.dSYM/ -e --debug-line | grep "^0x" | awk '{if ($3) prev=$3; print basename prev," ",$2}' |sort |uniq > Output/$1.native.dbg.ml;
+dwarfdump Output/$1.native.dbg.opt.dSYM/ -e --debug-line | grep "^0x" | awk '{if ($3) prev=$3; print basename prev," ",$2}' |sort |uniq > Output/$1.native.dbg.opt.ml;
Propchange: test-suite/trunk/PrintLineNo.sh
------------------------------------------------------------------------------
svn:executable = *
Added: test-suite/trunk/TEST.lineinfo.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.lineinfo.Makefile?rev=133276&view=auto
==============================================================================
--- test-suite/trunk/TEST.lineinfo.Makefile (added)
+++ test-suite/trunk/TEST.lineinfo.Makefile Fri Jun 17 13:32:01 2011
@@ -0,0 +1,65 @@
+##===- TEST.lineinfo.Makefile -----------------------------*- Makefile -*--===##
+#
+# This test is used to measure quality of debugging information.
+#
+##===----------------------------------------------------------------------===##
+
+CURDIR := $(shell cd .; pwd)
+PROGDIR := $(PROJ_SRC_ROOT)
+RELDIR := $(subst $(PROGDIR),,$(CURDIR))
+COLLECTOR := $(PROJ_SRC_ROOT)/CollectDebugInfoUsingLLDB.py
+
+REPORTS_TO_GEN := dbg
+REPORTS_SUFFIX := $(addsuffix .report.txt, $(REPORTS_TO_GEN))
+
+Output/%.bp: %.c Output/.dir
+ $(LCC) $(CPPFLAGS) $(CFLAGS) -g -c -emit-llvm $< -o $@.bc
+ $(LOPT) -print-breakpoints-for-testing $@.bc -o $@
+
+Output/%.bp: %.cpp Output/.dir
+ $(LCXX) $(CPPFLAGS) $(CFLAGS) -g -c -emit-llvm $< -o $@.bc
+ $(LOPT) -print-breakpoints-for-testing $@.bc -o $@
+
+Output/%.bp: %.m Output/.dir
+ $(LCC) $(CPPFLAGS) $(CFLAGS) -g -c -emit-llvm $< -o $@.bc
+ $(LOPT) -print-breakpoints-for-testing $@.bc -o $@
+
+Output/%.bp: %.mm Output/.dir
+ $(LCXX) $(CPPFLAGS) $(CFLAGS) -g -c -emit-llvm $< -o $@.bc
+ $(LOPT) -print-breakpoints-for-testing $@.bc -o $@
+
+$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
+test.$(TEST).%: Output/%.bp Output/%.dbg Output/%.dbg.opt Output/%.native.dbg Output/%.native.dbg.opt
+ @-is_skip=0; \
+ if test "$*" == "reversefile"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "spellcheck"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "sumcol"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "wc"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "wordfreq"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "exptree"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "ray"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "oscar"; then \
+ is_skip=1; \
+ fi; \
+ if test "$*" == "spirit"; then \
+ is_skip=1; \
+ fi; \
+ if test $$is_skip == 0; then \
+ $(PROJ_SRC_ROOT)/PrintLineNo.sh $*; \
+ $(PROJ_SRC_ROOT)/FindMissingLineNo.py $* $(PROJ_SRC_ROOT);\
+ fi
+
Added: test-suite/trunk/lineinfo.xfail
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/lineinfo.xfail?rev=133276&view=auto
==============================================================================
--- test-suite/trunk/lineinfo.xfail (added)
+++ test-suite/trunk/lineinfo.xfail Fri Jun 17 13:32:01 2011
@@ -0,0 +1 @@
+sse.shift.c 9
\ No newline at end of file
More information about the llvm-commits
mailing list