Hi Chris, Please consider pulling latest LLVM backend code from: git://github.com/penberg/sparse-llvm.git for-chris The backend is still work in progress but it already supports the following C language features: - Arithmetic operations - Comparison operations - Logical operations - Bitwise operations - Loops - Casts - Structs and unions The backend has been tested on i386 and x86-64. Some features have also been tested on PPC against LLVM 2.6. Please note that sparse uses 32-bit data type sizes by default so the generated code on 64-bit is not correct. We'd need something like the following patch to fix it: http://thread.gmane.org/gmane.comp.parsers.sparse/2654/focus=2655 Pekka ------------------> The following changes since commit 65a4e2fc656aa6e99604358056d8599a1823a8bc: sparse 0.4.4 (2011-11-21 01:56:02 -0800) are available in the git repository at: git://github.com/penberg/sparse-llvm.git for-chris Christopher Li (1): Limit usage of g++ to llvm related programs. Jeff Garzik (15): sparse, llvm: if-else code generation sparse-llvm: OP_SEL sparse-llvm: OP_SWITCH sparse-llvm: OP_LOAD sparse-llvm OP_PHISOURCE: replace copy with target=src pointer operation sparse, llvm: replace FIXME comment with assert(), following existing style sparse, llvm: implement OP_CALL sparse, llvm: move OP_PHI code from switch statement to separate function sparse, llvm: move OP_CAST code to separate func. support FP casts. sparse, llvm: create helper for obtaining instruction's type sparse, llvm: store module-local functions on function reference list sparse, llvm: move OP_COPY support to separate function. Add FP support. sparse, llvm: support OP_STORE sparse, llvm: Fix loops, by properly handling OP_PHI forward references sparse, llvm: add loop testcase Kamil Dudka (2): cse: treat PHI-nodes as other instructions cse: update PHI users when throwing away an instruction Pekka Enberg (59): sparse, llvm: Initial commit sparse, llvm: Fix assert() in sparse code sparse, llvm: Fix global variable initialization sparse, llvm: Fix 'sparsec' when it's not in PATH llvm, sparse: Separate entry and exit basic blocks sparse, llvm: Add switch statement to output_insn() sparse, llvm: OP_RET/PSEUDO_VAL code generation sparse, llvm: Add support for OP_RET/PSEUDO_ARG sparse, llvm: Introduce 'struct function' to clean up code sparse, llvm: Add output_op_binary() stub sparse, llvm: Implement OP_ADD sparse, llvm: Add support for more binary ops sparse, llvm: Implement some binary comparison ops sparse, llvm: Move binop tests to validation/backend sparse, llvm: Implement OP_CAST sparse, llvm: Floating point support for binops sparse, llvm: Reorganize code generation tests sparse, llvm: Bitwise not operator codegen sparse, llvm: Kill ifdef'd unssa() call sparse, llvm: Kill debugging code Merge pull request #1 from jgarzik/hacks Merge pull request #2 from jgarzik/hacks sparse, llvm: Warn the user when we fall back to GCC sparse, llvm: Code generation for string constants sparse, llvm: Cleanup output_data() sparse, llvm: Fix OP_CAST to use zero-extend sparse, llvm: Improve sparsec front-end sparse, llvm: Fix PSEUDO_OP code generation sparse, llvm: Don't redefine module local functions Revert "sparse, llvm: Don't redefine module local functions" sparse, llvm: Fix code generation for casts sparse, llvm: Fix pseudo_type() for PSEUDO_ARG Merge pull request #3 from jgarzik/hacks Merge branch 'master' of github.com:penberg/sparse-llvm llvm, sparse: Fix symbol_is_fp_type() goof Merge pull request #4 from jgarzik/hacks sparse, llvm: Fix code generation for 'long double' data type sparse, llvm: Add support for struct types sparse, llvm: Add support for symbol initializers sparse: Bump up sizeof(_Bool) to 8 bits sparse, llvm: Add support for logical ops sparse, llvm: Fix 'void *' pointer code generation sparse, llvm: Use new LLVM type system API for structs sparse, llvm: Fix struct code generation sparse, llvm: Fix symbol_type() for bitfields and enums sparse, llvm: Add support for array types sparse, llvm: Add support for union types sparse, llvm: Make 'sparsec' error handling more robust sparse, llvm: Function pointer code generation sparse, llvm: Fix symbol initializer code generation sparse, llvm: Fix 'extern' symbol code generation sparse, llvm: Make llc output to stdout in sparsec sparse, llvm: Pointer cast code generation sparse, llvm: OP_SET_B and OP_SET_A code generation sparse, llvm: More comparison ops code generation sparse, llvm: Simplify comparison op code generation sparse, llvm: FP comparison op code generation Merge pull request #6 from jgarzik/hacks sparse, llvm: Don't fail the build if LLVM is too old .gitignore | 1 + Makefile | 26 +- cse.c | 20 +- linearize.h | 2 + sparse-llvm.c | 1238 +++++++++++++++++++++++++++++++++++ sparsec | 52 ++ target.c | 2 +- validation/backend/arithmetic-ops.c | 94 +++ validation/backend/array.c | 6 + validation/backend/bitwise-ops.c | 64 ++ validation/backend/cast.c | 47 ++ validation/backend/cmp-ops.c | 84 +++ validation/backend/function-ptr.c | 11 + validation/backend/hello.c | 13 + validation/backend/logical-ops.c | 24 + validation/backend/loop.c | 21 + validation/backend/ptrcast.c | 9 + validation/backend/struct.c | 19 + validation/backend/union.c | 12 + validation/sizeof-bool.c | 6 +- 20 files changed, 1737 insertions(+), 14 deletions(-) create mode 100644 sparse-llvm.c create mode 100755 sparsec create mode 100644 validation/backend/arithmetic-ops.c create mode 100644 validation/backend/array.c create mode 100644 validation/backend/bitwise-ops.c create mode 100644 validation/backend/cast.c create mode 100644 validation/backend/cmp-ops.c create mode 100644 validation/backend/function-ptr.c create mode 100644 validation/backend/hello.c create mode 100644 validation/backend/logical-ops.c create mode 100644 validation/backend/loop.c create mode 100644 validation/backend/ptrcast.c create mode 100644 validation/backend/struct.c create mode 100644 validation/backend/union.c -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html