aboutsummaryrefslogtreecommitdiffstats
path: root/sparse-llvm.c
AgeCommit message (Expand)AuthorFilesLines
2021-03-08phi-sources can only have a single user (or none)Luc Van Oostenryck1-2/+0
2020-11-21add a new instruction for label-as-valueLuc Van Oostenryck1-0/+8
2020-10-23llvm: fix crash with llvm-11 / use real phi-nodesLuc Van Oostenryck1-46/+29
2018-08-25Merge branch 'ssa' into tipLuc Van Oostenryck1-0/+6
2018-07-01add PSEUDO_UNDEF & undef_pseudo()Luc Van Oostenryck1-0/+6
2018-06-30Merge branch 'cast-optim' into tipLuc Van Oostenryck1-0/+4
2018-06-29cast: optimize away casts to/from pointersLuc Van Oostenryck1-0/+4
2018-06-28bool: remove OP_{AND,OR}_BOOL instructionsLuc Van Oostenryck1-24/+0
2018-06-23cast: specialize integer castsLuc Van Oostenryck1-4/+7
2018-06-23cast: specialize cast from pointersLuc Van Oostenryck1-6/+19
2018-06-23cast: specialize casts from unsigned to pointersLuc Van Oostenryck1-0/+1
2018-06-23cast: specialize floats to integer conversionLuc Van Oostenryck1-1/+7
2018-06-23cast: specialize FPCAST into [USF]CVTFLuc Van Oostenryck1-4/+12
2018-06-21ptrlist: remove the now unneeded FOR_EACH_PTR_NOTAG()Luc Van Oostenryck1-2/+2
2018-03-11llvm: fix typo for constant addressesLuc Van Oostenryck1-1/+2
2018-03-01IR: let .cond unionize with .src and not .targetLuc Van Oostenryck1-1/+1
2018-03-01IR: remove now unused OP_LNOP & OP_SNOPLuc Van Oostenryck1-6/+0
2018-02-20no need for signed & unsigned multiplicationLuc Van Oostenryck1-5/+1
2018-02-17llvm: initialize at declaration timeLuc Van Oostenryck1-12/+5
2018-02-17llvm: use list_size() to count the numbers of argumentsLuc Van Oostenryck1-7/+2
2018-01-08add OP_SETFVALLuc Van Oostenryck1-4/+12
2018-01-07Merge branches 'fmax-warnings', 'funsigned-char', 'testcase-fix-missing-retur...Luc Van Oostenryck1-35/+25
2017-12-28llvm: default init of arrays & structsLuc Van Oostenryck1-0/+6
2017-12-28llvm: simplify emit of null pointersLuc Van Oostenryck1-4/+6
2017-12-27llvm: add declares for function prototypesLuc Van Oostenryck1-1/+4
2017-12-27llvm: use LLVMModuleRef for get_sym_value()Luc Van Oostenryck1-8/+8
2017-12-27llvm: fix: previous function ref MUST be reusedLuc Van Oostenryck1-23/+2
2017-11-18add support of floating-point specific arithmetic opsLuc Van Oostenryck1-17/+20
2017-11-18fix support of floating-point compareLuc Van Oostenryck1-12/+15
2017-11-17llvm: only compare void pointersLuc Van Oostenryck1-0/+4
2017-11-17llvm: add support for float initializerLuc Van Oostenryck1-0/+3
2017-11-17llvm: warn instead of assert on global initsLuc Van Oostenryck1-1/+6
2017-11-17llvm: gracefully catch impossible type/valueLuc Van Oostenryck1-2/+9
2017-11-17llvm: give names easier to debugLuc Van Oostenryck1-3/+3
2017-11-17llvm: cleanup of output_[ptr]cast()Luc Van Oostenryck1-27/+12
2017-11-17llvm: add support for cast from floatsLuc Van Oostenryck1-1/+9
2017-11-17llvm: add support for OP_FPCASTLuc Van Oostenryck1-1/+21
2017-11-17llvm: fix type of bitfieldsLuc Van Oostenryck1-0/+2
2017-11-17llvm: fix get value from non-anonymous symbolLuc Van Oostenryck1-9/+2
2017-11-17llvm: fix get value from initialized symbolLuc Van Oostenryck1-14/+13
2017-11-17llvm: add support for restricted typesLuc Van Oostenryck1-0/+1
2017-11-17llvm: fix mutated OP_[PTR]CASTLuc Van Oostenryck1-6/+4
2017-11-17llvm: fix mutated OP_PHISOURCELuc Van Oostenryck1-1/+1
2017-11-17llvm: fix mutated OP_SWITCHLuc Van Oostenryck1-1/+1
2017-11-17llvm: fix mutated OP_SELLuc Van Oostenryck1-3/+3
2017-11-17llvm: fix mutated OP_RETLuc Van Oostenryck1-3/+1
2017-11-17llvm: fix mutating function pointerLuc Van Oostenryck1-6/+27
2017-11-17llvm: take care of degenerated rvaluesLuc Van Oostenryck1-2/+12
2017-11-17llvm: fix variadic calls with constantsLuc Van Oostenryck1-1/+5
2017-11-17llvm: let pseudo_to_value() directly use the typeLuc Van Oostenryck1-21/+21
2017-11-17llvm: make value_to_ivalue() more flexibleLuc Van Oostenryck1-5/+10
2017-11-17llvm: make value_to_pvalue() more flexibleLuc Van Oostenryck1-3/+12
2017-11-17llvm: fix OP_SWITCH has no targetLuc Van Oostenryck1-3/+1
2017-11-17llvm: add support for OP_SWITCH with a rangeLuc Van Oostenryck1-10/+7
2017-11-17llvm: give a name to all valuesLuc Van Oostenryck1-13/+20
2017-11-17llvm: make pseudo_name() more flexibleLuc Van Oostenryck1-11/+6
2017-11-17llvm: fix type of switch constantsLuc Van Oostenryck1-1/+1
2017-11-17llvm: variadic functions are not being marked as suchLuc Van Oostenryck1-1/+1
2017-11-17llvm: adjust OP_RET's typeLuc Van Oostenryck1-0/+1
2017-11-17llvm: give correct type to binopsLuc Van Oostenryck1-0/+30
2017-11-17llvm: fix type in comparison with an address constantLuc Van Oostenryck1-2/+1
2017-11-17llvm: fix pointer/float mixup in comparisonsLuc Van Oostenryck1-2/+15
2017-11-17llvm: ignore OP_INLINED_CALLLuc Van Oostenryck1-1/+0
2017-11-17llvm: add support for OP_SETVAL with labelsLuc Van Oostenryck1-0/+3
2017-11-17llvm: add support for OP_SETVAL with floatsLuc Van Oostenryck1-1/+18
2017-11-17llvm: add support for OP_NEGLuc Van Oostenryck1-2/+15
2017-11-17llvm: fix output_op_[ptr]cast()Luc Van Oostenryck1-5/+35
2017-11-17llvm: fix output_op_store() which modify its operandLuc Van Oostenryck1-4/+2
2017-11-17llvm: fix translation of PSEUDO_VALs into a ValueRefsLuc Van Oostenryck1-1/+30
2017-11-17llvm: fix test of floating-point typeLuc Van Oostenryck1-25/+17
2017-11-17llvm: extract get_sym_value() from pseudo_to_value()Luc Van Oostenryck1-47/+53
2017-11-17llvm: avoid useless temp variableLuc Van Oostenryck1-5/+2
2017-11-17llvm: give a name to call's return valuesLuc Van Oostenryck1-1/+6
2017-11-17llvm: give arguments a nameLuc Van Oostenryck1-0/+12
2017-11-17llvm: use pseudo_list_size() instead of open coding itLuc Van Oostenryck1-4/+1
2017-11-17llvm: reduce scope of 'bb_nr'Luc Van Oostenryck1-2/+1
2017-11-17llvm: remove unneeded function::typeLuc Van Oostenryck1-3/+3
2017-11-17llvm: remove unneeded 'generation'Luc Van Oostenryck1-11/+2
2017-11-17llvm: remove unneeded arg 'module'Luc Van Oostenryck1-37/+37
2017-05-15use -fmem-report to report allocation statsLuc Van Oostenryck1-0/+1
2017-03-06split OP_BR between unconditional & conditional: OP_CBRLuc Van Oostenryck1-11/+14
2017-02-13llvm: remove unneeded OP_COPY supportLuc Van Oostenryck1-29/+1
2017-02-13llvm: fix typing when comparing to a constantLuc Van Oostenryck1-17/+32
2015-06-14sparse, llvm: compile: skip function prototypes to avoid SIGSEGVAzat Khuzhin1-0/+11
2013-05-27Fix result type of relational and logical operatorsXi Wang1-11/+18
2013-05-21sparse, llvm: die if errorXi Wang1-1/+4
2013-05-21sparse, llvm: set more data attributesXi Wang1-0/+6
2013-05-21sparse, llvm: fix struct name generationXi Wang1-6/+3
2013-05-21sparse, llvm: cache symbol_type() resultXi Wang1-1/+10
2013-05-21sparse, llvm: fix array sizeXi Wang1-1/+3
2013-05-21sparse, llvm: use LLVM_DEFAULT_TARGET_TRIPLEXi Wang1-1/+5
2013-05-20sparse, llvm: Use LLVM_HOSTTRIPLEPekka Enberg1-1/+1
2013-05-19sparse, llvm: set target specificationXi Wang1-3/+53
2013-05-19sparse, llvm: improve pointer arithmetic handlingXi Wang1-12/+26
2013-05-19sparse, llvm: base load/store address type on insn_symbol_type()Jonathan Neuschäfer1-3/+4
2013-05-19sparse, llvm: de-duplicate load/store address calculation codeJonathan Neuschäfer1-17/+14
2013-05-19sparse, llvm: Fix resulting type of store address calculationsJonathan Neuschäfer1-1/+1
2013-05-18sparse, llvm: simplify function generationXi Wang1-163/+12
2013-05-18sparse, llvm: fix phi generationXi Wang1-91/+40
2012-10-10sparse, llvm: Fix type of loaded valuesJonathan Neuschäfer1-1/+1
2012-08-19sparse, llvm: convert the condition of branch/select to boolJonathan Neuschäfer1-2/+11
2012-08-19sparse, llvm: Fix 'void' return type code generationPekka Enberg1-2/+10
2012-08-19sparse, llvm: 'Verify' the LLVM module before writing itJonathan Neuschäfer1-0/+3
2012-08-05sparse, llvm: Fix SIGSEGV for extern symbolsPekka Enberg1-0/+8
2012-06-09sparse, llvm: Fix global string access code generationPekka Enberg1-1/+7
2012-06-08sparse, llvm: Fix string initializer code generationPekka Enberg1-0/+6
2012-06-08sparse, llvm: Simplify output_data() type logicPekka Enberg1-1/+1
2012-02-04sparse, llvm: Fix varargs functionsBenjamin Herrenschmidt1-2/+2
2011-12-21sparse, llvm: Use LLVMInt1Type() in sym_basetype_type()Pekka Enberg1-0/+3
2011-11-23sparse, llvm: Fix loops, by properly handling OP_PHI forward referencesJeff Garzik1-7/+77
2011-11-22sparse, llvm: FP comparison op code generationPekka Enberg1-2/+27
2011-11-22sparse, llvm: Simplify comparison op code generationPekka Enberg1-33/+23
2011-11-22sparse, llvm: More comparison ops code generationPekka Enberg1-4/+4
2011-11-22sparse, llvm: OP_SET_B and OP_SET_A code generationPekka Enberg1-2/+2
2011-11-22sparse, llvm: Pointer cast code generationPekka Enberg1-1/+19
2011-11-21sparse, llvm: Fix 'extern' symbol code generationPekka Enberg1-1/+2
2011-11-21sparse, llvm: Fix symbol initializer code generationPekka Enberg1-2/+4
2011-11-19sparse, llvm: Function pointer code generationPekka Enberg1-2/+52
2011-10-28sparse, llvm: Add support for union typesPekka Enberg1-0/+20
2011-10-25sparse, llvm: Add support for array typesPekka Enberg1-0/+17
2011-10-25sparse, llvm: Fix symbol_type() for bitfields and enumsPekka Enberg1-0/+2
2011-10-24sparse, llvm: Fix struct code generationPekka Enberg1-23/+27
2011-10-24sparse, llvm: Use new LLVM type system API for structsPekka Enberg1-2/+13
2011-10-24sparse, llvm: Fix 'void *' pointer code generationPekka Enberg1-3/+1
2011-09-28sparse, llvm: Add support for logical opsPekka Enberg1-4/+19
2011-09-09sparse, llvm: Add support for symbol initializersPekka Enberg1-2/+11
2011-09-07sparse, llvm: Add support for struct typesPekka Enberg1-2/+53
2011-08-31sparse, llvm: Fix code generation for 'long double' data typePekka Enberg1-0/+3
2011-08-31sparse, llvm: support OP_STOREJeff Garzik1-1/+31
2011-08-30sparse, llvm: move OP_COPY support to separate function. Add FP support.Jeff Garzik1-12/+30
2011-08-30sparse, llvm: store module-local functions on function reference listJeff Garzik1-1/+9
2011-08-30llvm, sparse: Fix symbol_is_fp_type() goofPekka Enberg1-1/+2
2011-08-30Merge branch 'master' of github.com:penberg/sparse-llvmPekka Enberg1-7/+27
2011-08-30sparse, llvm: Fix pseudo_type() for PSEUDO_ARGPekka Enberg1-4/+4
2011-08-30sparse, llvm: create helper for obtaining instruction's typeJeff Garzik1-7/+27
2011-08-30sparse, llvm: Fix code generation for castsPekka Enberg1-6/+10
2011-08-30Revert "sparse, llvm: Don't redefine module local functions"Pekka Enberg1-5/+0
2011-08-30sparse, llvm: Don't redefine module local functionsPekka Enberg1-0/+5
2011-08-30sparse, llvm: Fix PSEUDO_OP code generationPekka Enberg1-21/+21
2011-08-29sparse, llvm: Fix OP_CAST to use zero-extendPekka Enberg1-1/+1
2011-08-29sparse, llvm: Cleanup output_data()Pekka Enberg1-3/+5
2011-08-29sparse, llvm: Code generation for string constantsPekka Enberg1-6/+48
2011-08-28sparse, llvm: move OP_CAST code to separate func. support FP casts.Jeff Garzik1-12/+20
2011-08-27sparse, llvm: move OP_PHI code from switch statement to separate functionJeff Garzik1-31/+35
2011-08-27sparse, llvm: implement OP_CALLJeff Garzik1-1/+157
2011-08-27sparse, llvm: replace FIXME comment with assert(), following existing styleJeff Garzik1-2/+2
2011-08-27sparse-llvm OP_PHISOURCE: replace copy with target=src pointer operationJeff Garzik1-12/+3
2011-08-27sparse, llvm: Kill debugging codePekka Enberg1-4/+0
2011-08-27sparse, llvm: Kill ifdef'd unssa() callPekka Enberg1-4/+0
2011-08-27sparse, llvm: Bitwise not operator codegenPekka Enberg1-1/+14
2011-08-27sparse, llvm: Floating point support for binopsPekka Enberg1-24/+70
2011-08-27sparse-llvm: OP_LOADJeff Garzik1-1/+29
2011-08-27sparse-llvm: OP_SWITCHJeff Garzik1-5/+47
2011-08-27sparse-llvm: OP_SELJeff Garzik1-1/+14
2011-08-27sparse, llvm: if-else code generationJeff Garzik1-12/+86
2011-08-25sparse, llvm: Implement OP_CASTPekka Enberg1-3/+12
2011-08-25sparse, llvm: Implement some binary comparison opsPekka Enberg1-4/+30
2011-08-25sparse, llvm: Add support for more binary opsPekka Enberg1-13/+15
2011-08-25sparse, llvm: Implement OP_ADDPekka Enberg1-22/+69
2011-08-25sparse, llvm: Add output_op_binary() stubPekka Enberg1-0/+91
2011-08-25sparse, llvm: Introduce 'struct function' to clean up codePekka Enberg1-18/+23
2011-08-25sparse, llvm: Add support for OP_RET/PSEUDO_ARGPekka Enberg1-10/+15
2011-08-23sparse, llvm: OP_RET/PSEUDO_VAL code generationPekka Enberg1-20/+39
2011-08-23sparse, llvm: Add switch statement to output_insn()Pekka Enberg1-8/+62
2011-08-23llvm, sparse: Separate entry and exit basic blocksPekka Enberg1-6/+14
2011-08-23sparse, llvm: Fix global variable initializationPekka Enberg1-2/+11
2011-08-23sparse, llvm: Initial commitPekka Enberg1-0/+185