| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 68747
|
|
|
|
| |
llvm-svn: 68745
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
default to verbose.
llvm-svn: 67668
|
|
|
|
| |
llvm-svn: 67580
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
operand index in the high bits.
llvm-svn: 67387
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
format strings with the standard ${:foo} syntax.
llvm-svn: 66527
|
|
|
|
|
|
|
| |
existed was for llvm-gcc 3.4 (which used the __main hack) which
is really really long dead.
llvm-svn: 66417
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
sure to print the value properly sext'd to the right pointer size.
This fixes PR3481.
llvm-svn: 63843
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 63198
|
|
|
|
|
|
| |
compatibility with VC++. Patch by Max Burke!
llvm-svn: 62813
|
|
|
|
| |
llvm-svn: 62763
|
|
|
|
| |
llvm-svn: 62279
|
|
|
|
| |
llvm-svn: 62185
|
|
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
|
|
|
|
|
| |
functions.
llvm-svn: 61345
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Print a single parameter .file directive if we have an ELF target.
llvm-svn: 60480
|
|
|
|
| |
llvm-svn: 59872
|
|
|
|
| |
llvm-svn: 58963
|
|
|
|
|
|
| |
string in the .ll and .s printers.
llvm-svn: 58962
|
|
|
|
|
|
|
|
| |
backend
and breaks llvm-gcc
llvm-svn: 58926
|
|
|
|
|
|
|
| |
FIXME: it seems, that most of targets don't support
offsets wrt CPI/GlobalAddress', was it intentional?
llvm-svn: 58917
|
|
|
|
|
|
|
| |
valid comments in inline assembly.
gcc.target/i386/20011009-1.c
llvm-svn: 57365
|
|
|
|
|
|
|
| |
and APFloat::convertToInteger. Restore return value to
IEEE754. Adjust all users accordingly.
llvm-svn: 57329
|
|
|
|
|
|
|
| |
make it clearer what the function does. No functional
change.
llvm-svn: 57325
|
|
|
|
|
|
| |
isReg, etc., from isRegister, etc.
llvm-svn: 57006
|
|
|
|
| |
llvm-svn: 56584
|
|
|
|
| |
llvm-svn: 56583
|
|
|
|
| |
llvm-svn: 56579
|
|
|
|
| |
llvm-svn: 56574
|
|
|
|
| |
llvm-svn: 56573
|
|
|
|
| |
llvm-svn: 56572
|
|
|
|
| |
llvm-svn: 56571
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 55962
|
|
|
|
| |
llvm-svn: 55919
|
|
|
|
| |
llvm-svn: 55779
|
|
|
|
|
|
|
|
|
| |
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
|