From: Pekka Enberg <penberg@kernel.org>
To: Christopher Li <sparse@chrisli.org>
Cc: Jeff Garzik <jgarzik@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-sparse@vger.kernel.org
Subject: [GIT PULL] Sparse LLVM backend
Date: Fri, 25 Nov 2011 09:46:06 +0200 (EET) [thread overview]
Message-ID: <alpine.LFD.2.02.1111250945120.7544@tux.localdomain> (raw)
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
reply other threads:[~2011-11-25 7:46 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.02.1111250945120.7544@tux.localdomain \
--to=penberg@kernel.org \
--cc=jgarzik@redhat.com \
--cc=linux-sparse@vger.kernel.org \
--cc=sparse@chrisli.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).