summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add a new "available_externally" linkage type. This is intendedChris Lattner2009-04-131-1/+3
| | | | | | | | to support C99 inline, GNU extern inline, etc. Related bugzilla's include PR3517, PR3100, & PR2933. Nothing uses this yet, but it appears to work. llvm-svn: 68940
* Pass in the std::string parameter instead of returning it by value.Bill Wendling2009-04-101-13/+12
| | | | llvm-svn: 68747
* Constify getter methods.Bill Wendling2009-04-101-1/+2
| | | | llvm-svn: 68745
* StringMap<DIE*>::iterator::first() returns a pointer to the first character ofBill Wendling2009-04-091-1/+5
| | | | | | | | the key. This will cause it to create a new std::string, which isn't wanted. Instead, pass back the "const char*". Modify the EmitString() method to take a "const char*". llvm-svn: 68741
* change printStringChar to emit characters as unsigned char instead of char,Chris Lattner2009-04-081-9/+5
| | | | | | | | | | | avoiding sign extension for the top octet. For "negative" chars, we'd print stuff like: .asciz "\702... now we print: .asciz "\302... llvm-svn: 68577
* CodeGen still defaults to non-verbose asm, but llc now overrides it and ↵Evan Cheng2009-03-251-2/+13
| | | | | | default to verbose. llvm-svn: 67668
* Do not emit comments unless -asm-verbose.Evan Cheng2009-03-241-93/+150
| | | | llvm-svn: 67580
* Fix internal representation of fp80 to be theDale Johannesen2009-03-231-8/+8
| | | | | | | | | | same as a normal i80 {low64, high16} rather than its own {high64, low16}. A depressing number of places know about this; I think I got them all. Bitcode readers and writers convert back to the old form to avoid breaking compatibility. llvm-svn: 67562
* For inline asm output operand that matches an input. Encode the input ↵Evan Cheng2009-03-201-1/+1
| | | | | | operand index in the high bits. llvm-svn: 67387
* Fix some significant problems with constant pools that resulted in ↵Evan Cheng2009-03-131-31/+53
| | | | | | | | | | | | | | | | | | | | | | | unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues. 1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants. 2. MachineConstantPool alignment field is also a log2 value. 3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values. 4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries. 5. Asm printer uses expensive data structure multimap to track constant pool entries by sections. 6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic. Solutions: 1. ConstantPoolSDNode alignment field is changed to keep non-log2 value. 2. MachineConstantPool alignment field is also changed to keep non-log2 value. 3. Functions that create ConstantPool nodes are passing in non-log2 alignments. 4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT. 5. Asm printer uses cheaper data structure to group constant pool entries. 6. Asm printer compute entry offsets after grouping is done. 7. Change JIT code to compute entry offsets on the fly. llvm-svn: 66875
* wire up support for emitting "special" values from inline asmChris Lattner2009-03-101-1/+20
| | | | | | format strings with the standard ${:foo} syntax. llvm-svn: 66527
* just remove the use_empty() check entirely, the only reason itChris Lattner2009-03-091-14/+8
| | | | | | | existed was for llvm-gcc 3.4 (which used the __main hack) which is really really long dead. llvm-svn: 66417
* Make the code generator rip of dead constant expr uses before decidingChris Lattner2009-03-091-10/+16
| | | | | | | | whether a global is dead or not. This should fix PR3749 - linker adds spurious use to appending globals. I can't reasonably add a testcase for this, because the bc writer/reader strip dead constant users. llvm-svn: 66404
* Overhaul my earlier submission due to feedback. It's a large patch, but most ofBill Wendling2009-02-241-2/+2
| | | | | | | | | | | | them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
* Drop bunch of half-working stuff in the ext_weak linkage support.Anton Korobeynikov2009-02-211-10/+0
| | | | | | | | | | | Now we're using one gross, but quite robust hack :) (previous ones did not work, for example, when ext_weak symbol was used deep inside constant expression in the initializer). The proper fix of this problem will require some quite huge asmprinter changes and that's why was postponed. This fixes PR3629 by the way :) llvm-svn: 65230
* if we have a large GEP offset on a 32-bit or other target, makeChris Lattner2009-02-051-0/+6
| | | | | | | sure to print the value properly sext'd to the right pointer size. This fixes PR3481. llvm-svn: 63843
* Enable emitting of constant values in non-default address space as well. The ↵Sanjiv Gupta2009-01-301-56/+59
| | | | | | APIs emitting constants now take an additional parameter signifying the address space in which to emit. The APIs like getData8BitsDirective() etc are made virtual enabling targets to be able to define appropirate directivers for various sizes and address spaces. llvm-svn: 63377
* Rename getAnalysisToUpdate to getAnalysisIfAvailable.Duncan Sands2009-01-281-4/+4
| | | | llvm-svn: 63198
* do not sign extend characters input to isprint. This improvesChris Lattner2009-01-221-1/+1
| | | | | | compatibility with VC++. Patch by Max Burke! llvm-svn: 62813
* Few targets like the tiny little PIC16 have only 16-bit pointers.Sanjiv Gupta2009-01-221-0/+4
| | | | llvm-svn: 62763
* Add the private linkage.Rafael Espindola2009-01-151-2/+2
| | | | llvm-svn: 62279
* Use DwarfWriter to record dbg variables.Devang Patel2009-01-131-4/+5
| | | | llvm-svn: 62185
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-7/+7
| | | | | | suggested by Chris. llvm-svn: 62099
* Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separateDan Gohman2008-12-221-182/+207
| | | | | | functions. llvm-svn: 61345
* Fix bug 3202.Rafael Espindola2008-12-191-1/+2
| | | | | | | The EH_frame and .eh symbols are now private, except for darwin9 and earlier. The patch also fixes the definition of PrivateGlobalPrefix on pcc linux. llvm-svn: 61242
* Fix bug 3140.Rafael Espindola2008-12-031-0/+8
| | | | | | Print a single parameter .file directive if we have an ELF target. llvm-svn: 60480
* Make a convenient helper for printing offsets.Anton Korobeynikov2008-11-221-0/+7
| | | | llvm-svn: 59872
* eliminate a couple more uses of utohexstr.Chris Lattner2008-11-101-6/+10
| | | | llvm-svn: 58963
* Use utohex_buffer instead of utohexstr to avoid creating a temporaryChris Lattner2008-11-101-1/+3
| | | | | | string in the .ll and .s printers. llvm-svn: 58962
* Temporary revert my last commit: it seems it's triggering some subtle bug in ↵Anton Korobeynikov2008-11-081-7/+0
| | | | | | | | backend and breaks llvm-gcc llvm-svn: 58926
* Factor out offset printing code into generic AsmPrinter.Anton Korobeynikov2008-11-081-0/+7
| | | | | | | FIXME: it seems, that most of targets don't support offsets wrt CPI/GlobalAddress', was it intentional? llvm-svn: 58917
* Remove some overzealous checks that were rejectingDale Johannesen2008-10-101-12/+8
| | | | | | | valid comments in inline assembly. gcc.target/i386/20011009-1.c llvm-svn: 57365
* Add a "loses information" return value to APFloat::convertDale Johannesen2008-10-091-1/+4
| | | | | | | and APFloat::convertToInteger. Restore return value to IEEE754. Adjust all users accordingly. llvm-svn: 57329
* Rename APFloat::convertToAPInt to bitcastToAPInt toDale Johannesen2008-10-091-4/+4
| | | | | | | make it clearer what the function does. No functional change. llvm-svn: 57325
* Switch the MachineOperand accessors back to the short names likeDan Gohman2008-10-031-2/+2
| | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006
* Use helperAnton Korobeynikov2008-09-241-8/+2
| | | | llvm-svn: 56584
* SmallPtrSet will be betterAnton Korobeynikov2008-09-241-3/+2
| | | | llvm-svn: 56583
* Use generic section-handling stuff to emit constant pool entriesAnton Korobeynikov2008-09-241-45/+36
| | | | llvm-svn: 56579
* Get rid of duplicate char*/Section* TextSectionAnton Korobeynikov2008-09-241-1/+2
| | | | llvm-svn: 56574
* Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.Anton Korobeynikov2008-09-241-3/+13
| | | | llvm-svn: 56573
* Drop obsolete hook and change all usage to new interfaceAnton Korobeynikov2008-09-241-6/+1
| | | | llvm-svn: 56572
* Provide direct function to switch to SectionAnton Korobeynikov2008-09-241-0/+20
| | | | llvm-svn: 56571
* Next round of earlyclobber handling. Approach theDale Johannesen2008-09-241-2/+1
| | | | | | | | | | RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. llvm-svn: 56539
* Add a bit to mark operands of asm's that conflictDale Johannesen2008-09-171-1/+2
| | | | | | | | | with an earlyclobber operand elsewhere. Propagate this bit and the earlyclobber bit through SDISel. Change linear-scan RA not to allocate regs in a way that conflicts with an earlyclobber. See also comments. llvm-svn: 56290
* Move the uglier parts of deciding not to emit aDale Johannesen2008-09-091-15/+4
| | | | | | | | | UsedDirective for some symbols in llvm.used into Darwin-specific code. I've decided LessPrivateGlobal is potentially a useful abstraction and left it in the target-independent area, with improved comment. llvm-svn: 56024
* Fix logic for not emitting no-dead-strip for someDale Johannesen2008-09-091-2/+14
| | | | | | | | | | objects in llvm.used (thanks Anton). Makes visible the magic 'l' prefix for symbols on Darwin which are to be passed through the assembler, then removed at linktime (previously all references to this had been hidden in the ObjC FE code, oh well). llvm-svn: 55973
* Don't suppress no-dead-strip for used static functions.Dale Johannesen2008-09-081-1/+1
| | | | llvm-svn: 55962
* Add AsmPrinter support for i128 and larger static initializer data.Dan Gohman2008-09-081-19/+36
| | | | llvm-svn: 55919
* Tidy up several unbeseeming casts from pointer to intptr_t.Dan Gohman2008-09-041-1/+1
| | | | llvm-svn: 55779
* Do not emit a UsedDirective for things in the llvm.usedDale Johannesen2008-09-031-3/+32
| | | | | | | | | list that have internal linkage; the linker doesn't need or want this. (These objects must still be preserved at compile time, so just removing them from the llvm.used list doesn't work.) Should affect only Darwin. llvm-svn: 55722
OpenPOWER on IntegriCloud