summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen2008-08-171-10/+10
| | | | | | | | | | | | | | | | | | In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. llvm-svn: 54899
* Enable first-class aggregates support.Dan Gohman2008-07-231-5/+0
| | | | | | | | | | | | Remove the GetResultInst instruction. It is still accepted in LLVM assembly and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove support for return instructions with multiple values. These are auto-upgraded to use InsertValueInst instructions. The IRBuilder still accepts multiple-value returns, and auto-upgrades them to InsertValueInst instructions. llvm-svn: 53941
* InsertValue and ExtractValue constant expressions are alwaysDan Gohman2008-07-211-20/+0
| | | | | | | folded. Remove code that handled the case where they aren't folded, and remove bitcode reader/writer support for them. llvm-svn: 53887
* Add a little wrapper header that is put around bc files when emittingChris Lattner2008-07-091-1/+74
| | | | | | | | | | | | | | | | bc files for modules with a target triple that indicates they are for darwin. The reader unconditionally handles this, and the writer could turn this on for more targets if we care. This change has two benefits for darwin: 1) it allows us to encode the cpu type of the file in an easy to read place that doesn't require decoding the bc file. 2) it works around a bug (IMO) in darwin's AR where it is incapable of handling files that are not a multiple of 8 bytes long. BC files are only guaranteed to be multiples of 4 bytes long. llvm-svn: 53275
* Turn stdout into binary mode during bitcode emission.Anton Korobeynikov2008-06-061-0/+5
| | | | | | | This is necessary on windows targets, since stdout is in text mode there. Patch by Julien Lerouge! llvm-svn: 52038
* Improved bitcode support for insertvalue/extractvalue.Dan Gohman2008-05-311-6/+13
| | | | llvm-svn: 51822
* IR, bitcode reader, bitcode writer, and asmparser changes toDan Gohman2008-05-311-10/+16
| | | | | | | | | | | insertvalue and extractvalue to use constant indices instead of Value* indices. And begin updating LangRef.html. There's definately more to come here, but I'm checking this basic support in now to make it available to people who are interested. llvm-svn: 51806
* Make structs and arrays first-class types, and add assemblyDan Gohman2008-05-231-0/+24
| | | | | | | | | and bitcode support for the extractvalue and insertvalue instructions and constant expressions. Note that this does not yet include CodeGen support. llvm-svn: 51468
* Allow an extra bit for CommonLinkage.Dale Johannesen2008-05-151-1/+1
| | | | | | | | This changes the .bc file format, but if I understand how it works correctly, old .bc files continue to be readable. llvm-svn: 51161
* Add CommonLinkage; currently tentative definitionsDale Johannesen2008-05-141-0/+1
| | | | | | | | | | are represented as "weak", but there are subtle differences in some cases on Darwin, so we need both. The intent is that "common" will behave identically to "weak" unless somebody changes their target to do something else. No functional change as yet. llvm-svn: 51118
* Add two new instructions to the llvm IR, vicmp and vfcmp. see updated LangRefNate Begeman2008-05-121-0/+4
| | | | | | for details. CodeGen support coming in a follow up patch llvm-svn: 50985
* Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989Nick Lewycky2008-04-251-8/+1
| | | | | | r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123. llvm-svn: 50265
* Reimplement the parameter attributes support, phase #1. hilights:Chris Lattner2008-03-121-6/+6
| | | | | | | | | | | | | | | | | | | | | | | 1. There is now a "PAListPtr" class, which is a smart pointer around the underlying uniqued parameter attribute list object, and manages its refcount. It is now impossible to mess up the refcount. 2. PAListPtr is now the main interface to the underlying object, and the underlying object is now completely opaque. 3. Implementation details like SmallVector and FoldingSet are now no longer part of the interface. 4. You can create a PAListPtr with an arbitrary sequence of ParamAttrsWithIndex's, no need to make a SmallVector of a specific size (you can just use an array or scalar or vector if you wish). 5. All the client code that had to check for a null pointer before dereferencing the pointer is simplified to just access the PAListPtr directly. 6. The interfaces for adding attrs to a list and removing them is a bit simpler. Phase #2 will rename some stuff (e.g. PAListPtr) and do other less invasive changes. llvm-svn: 48289
* Honour aliases visibility when reading from/writing to bitcodeAnton Korobeynikov2008-03-111-0/+1
| | | | llvm-svn: 48248
* Add an unwind_to field to basic blocks, making them Users instead of Values.Nick Lewycky2008-03-021-1/+8
| | | | | | This is the first checkin for PR1269, the new EH infrastructure. llvm-svn: 47802
* Remove debugging help.Devang Patel2008-02-261-1/+0
| | | | llvm-svn: 47585
* Update bitcode reader and writer to handle multiple return values. Devang Patel2008-02-261-7/+16
| | | | | | Take 2. llvm-svn: 47583
* Backing out r47521 for now. This has broken a number of tests.Evan Cheng2008-02-231-15/+7
| | | | llvm-svn: 47533
* Properly read and write bitcodes for multiple return values.Devang Patel2008-02-231-7/+15
| | | | llvm-svn: 47521
* Split ParameterAttributes.h, putting the complicatedDale Johannesen2008-02-221-1/+1
| | | | | | | stuff into ParamAttrsList.h. Per feedback from ParamAttrs changes. llvm-svn: 47504
* Read and write getresult.Devang Patel2008-02-221-0/+5
| | | | llvm-svn: 47471
* Support alignment within ParamAttrs in the I/O handling.Dale Johannesen2008-02-201-1/+1
| | | | llvm-svn: 47401
* Expand ParameterAttributes to 32 bits (in preparationDale Johannesen2008-02-191-1/+1
| | | | | | | for adding alignment info, not there yet). Clean up interfaces to reference ParameterAttributes consistently. llvm-svn: 47342
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Implement part of review feedback for address spaces.Christopher Lamb2007-12-121-6/+5
| | | | llvm-svn: 44933
* Fix compilation.Duncan Sands2007-12-111-1/+2
| | | | llvm-svn: 44864
* Implement address space attribute for LLVM pointer types. Address spaces are Christopher Lamb2007-12-111-6/+10
| | | | | | | | | | | | | | | | | regions of memory that have a target specific relationship, as described in the Embedded C Technical Report. This also implements the 2007-12-11-AddressSpaces test, which demonstrates how address space attributes can be used in LLVM IR. In addition, this patch changes the bitcode signature for stores (in a backwards compatible manner), such that the pointer type, rather than the pointee type, is encoded. This permits type information in the pointer (e.g. address space) to be preserved for stores. LangRef updates are forthcoming. llvm-svn: 44858
* Adding a collector name attribute to Function in the IR. These Gordon Henriksen2007-12-101-10/+23
| | | | | | | | | | | | | | | | | | | | methods are new to Function: bool hasCollector() const; const std::string &getCollector() const; void setCollector(const std::string &); void clearCollector(); The assembly representation is as such: define void @f() gc "shadow-stack" { ... The implementation uses an on-the-side table to map Functions to collector names, such that there is no overhead. A StringPool is further used to unique collector names, which are extremely likely to be unique per process. llvm-svn: 44769
* Unbreak backwards compatibility with bytecode format. RegressionChris Lattner2007-11-271-1/+3
| | | | | | | introduced by this patch: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071126/055824.html llvm-svn: 44364
* Fix PR1146: parameter attributes are longer part ofDuncan Sands2007-11-271-26/+11
| | | | | | | | | | | | the function type, instead they belong to functions and function calls. This is an updated and slightly corrected version of Reid Spencer's original patch. The only known problem is that auto-upgrading of bitcode files doesn't seem to work properly (see test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully a bitcode guru (who might that be? :) ) will fix it. llvm-svn: 44359
* Next PPC long double bits. First cut at constants.Dale Johannesen2007-10-111-3/+1
| | | | | | | | | No compile-time support for constant operations yet, just format transformations. Make readers and writers work. Split constants into 2 doubles in Legalize. llvm-svn: 42865
* Make temporaries explicit to avoid prematureDale Johannesen2007-09-261-2/+5
| | | | | | destruction of compiler-created ones. llvm-svn: 42383
* Revise previous patch per review comments.Dale Johannesen2007-09-121-5/+2
| | | | | | | Next round of x87 long double stuff. Getting close now, basically works. llvm-svn: 41875
* Add APInt interfaces to APFloat (allows directlyDale Johannesen2007-09-111-6/+13
| | | | | | | | | access to bits). Use them in place of float and double interfaces where appropriate. First bits of x86 long double constants handling (untested, probably does not work). llvm-svn: 41858
* Revert previous change to IR.Dale Johannesen2007-09-071-4/+3
| | | | llvm-svn: 41769
* Next round of APFloat changes.Dale Johannesen2007-09-061-2/+3
| | | | | | | | | | | | | | Use APFloat in UpgradeParser and AsmParser. Change all references to ConstantFP to use the APFloat interface rather than double. Remove the ConstantFP double interfaces. Use APFloat functions for constant folding arithmetic and comparisons. (There are still way too many places APFloat is just a wrapper around host float/double, but we're getting there.) llvm-svn: 41747
* Patch 10 for long double. Doing constants right needs expanding ConstantFPDale Johannesen2007-08-091-3/+9
| | | | | | | | | | | | to handle values bigger than double. If we assume host==target and host long double works correctly, this is not too bad, but we don't want to have that limitation longterm. I could implement accepting double constants as long double or something like that, which would lead to incorrect codegen with no errors; the more I think about that the worse it seems. Rather than do such a hack that would be backed out later, I'm settling for giving reasonable error messages, for now. llvm-svn: 40974
* Long double, part 1 of N. Support in IR.Dale Johannesen2007-08-031-0/+3
| | | | llvm-svn: 40774
* remove a dead caseChris Lattner2007-07-051-1/+0
| | | | llvm-svn: 37916
* allow partially materialized modules to be written out, which just strips outChris Lattner2007-05-111-0/+1
| | | | | | the functions which haven't been read. llvm-svn: 36999
* Make a preemptive bitcode format change to support PR1146. This lets us doChris Lattner2007-05-081-4/+23
| | | | | | | pr1146 in llvm 2.1 without ugly code to emulate old behavior. This should be merged into the 2.0 release branch. llvm-svn: 36928
* Flush the file after writing bitcode so that clients who don't close theirChris Lattner2007-05-061-0/+3
| | | | | | ofstreams will be ok. llvm-svn: 36878
* Unbreak VC++.Jeff Cohen2007-05-061-1/+1
| | | | llvm-svn: 36831
* add abbrevs for binops and casts. This shrinks a testcase from 725132->682500Chris Lattner2007-05-061-3/+29
| | | | | | bytes. llvm-svn: 36829
* implement reading/writing of inlineasm objectsChris Lattner2007-05-061-6/+16
| | | | llvm-svn: 36827
* add some abbrevs for ret and unreachable, shrinking kc++ from 2717360->2705388Chris Lattner2007-05-061-3/+31
| | | | llvm-svn: 36823
* add a denser encoding for null terminated strings, add a 6-bit abbrev asChris Lattner2007-05-061-8/+36
| | | | | | well. This shrinks kc++ from 2724088 to 2717360 bytes. llvm-svn: 36821
* add an abbreviation for the string constants opzn, shrinking the constnatsChris Lattner2007-05-061-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | block from: Block ID #11 (CONSTANTS_BLOCK): Num Instances: 1722 Total Size: 3.85976e+06b/482470B/120617W % of file: 16.7609 Average Size: 2241.44b/280.18B/70.045W Tot/Avg SubBlocks: 0/0 Tot/Avg Abbrevs: 1/0.00058072 Tot/Avg Records: 26423/15.3444 % Abbrev Recs: 69.1746 to: Block ID #11 (CONSTANTS_BLOCK): Num Instances: 1724 Total Size: 2.62406e+06b/328008B/82001.9W % of file: 12.041 Average Size: 1522.08b/190.26B/47.5649W Tot/Avg SubBlocks: 0/0 Tot/Avg Abbrevs: 2/0.00116009 Tot/Avg Records: 26280/15.2436 % Abbrev Recs: 68.9992 This shrinks kc++ from 2815788 to 2724088 bytes, which means the bitcode file is now smaller than the bytecode file. llvm-svn: 36820
* implement the 'string constant' optimization. This shrinks kc.bit fromChris Lattner2007-05-061-0/+6
| | | | | | 2878544 to 2815788 llvm-svn: 36818
* further reduce the redundancy of types in the instruction encoding. ThisChris Lattner2007-05-061-20/+12
| | | | | | shrinks function bodies in kc++ from 891913B to 884073B llvm-svn: 36817
OpenPOWER on IntegriCloud