| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 151778
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this hook, functions w/ a completely empty body (including no
epilogue) will cause an MCEmitter assertion failure.
For example,
define internal fastcc void @empty_function() {
unreachable
}
rdar://10947471
llvm-svn: 151673
|
|
|
|
|
|
|
|
| |
run with LIT now and now Dejagnu. dg.exp is no longer needed.
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
|
|
|
|
|
|
|
|
|
| |
symbol from an assignment. In this case the symbol did not have a fragment so
MCObjectWriter::IsSymbolRefDifferenceFullyResolved() should not have been
calling IsSymbolRefDifferenceFullyResolvedImpl() with a NULL fragment and should
just have returned false in that case.
llvm-svn: 149442
|
|
|
|
|
|
|
|
| |
When not using subsections via symbols, the assembler can resolve
symbol differences (including pcrel references) to non-local
labels at assembly time, not just those in the same atom.
llvm-svn: 148865
|
|
|
|
| |
llvm-svn: 148454
|
|
|
|
|
|
|
|
|
| |
If the fixup is out of range for the Thumb1 instruction, relax it
to the Thumb2 encoding instead.
rdar://10711829
llvm-svn: 148424
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the non-local symbol in the expression is in the same fragment
as the second symbol, the assembler can still evaluate the expression
without needing a relocation.
For example, on ARM:
_foo:
ldr lr, (_foo - 4)
rdar://10348687
llvm-svn: 148341
|
|
|
|
| |
llvm-svn: 148339
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
assembly source when it generates the TAG_subprogram dwarf debug info for
the labels that have nothing between them as in this bit of assembly source:
% cat ZeroLength.s
_func1:
_func2:
nop
One solution would be to not emit the subsequent labels with the same address
and use the next label with a different address or the end of the section for
the AT_high_pc value of the TAG_subprogram.
Turns out in llvm-mc it is not possible in all cases to determine of two
symbols have the same value at the point we put out the TAG_subprogram dwarf
debug info.
So we will have llvm-mc instead of putting out TAG_subprogram's put out
DW_TAG_label's. And the DW_TAG_label does not have a AT_high_pc value which
avoids the problem.
This commit is only the functional change to make the diffs clear as to what is
really being changed. The next commit will be to clean up the names of such
things like MCGenDwarfSubprogramEntry to something like MCGenDwarfLabelEntry.
rdar://10666925
llvm-svn: 147860
|
|
|
|
| |
llvm-svn: 146456
|
|
|
|
|
|
| |
such as what VCS information is attached.
llvm-svn: 146333
|
|
|
|
|
|
|
|
|
|
| |
generates the dwarf Compile Unit DIE and a dwarf subprogram DIE for each
non-temporary label.
The next part will be to get the clang driver to enable this when assembling
a .s file. rdar://9275556
llvm-svn: 146262
|
|
|
|
|
|
|
|
| |
When the file isn't being built with subsections-via-symbols, symbol
differences involving non-local symbols can be resolved more aggressively.
Needed for gas compatibility.
llvm-svn: 146054
|
|
|
|
| |
llvm-svn: 146038
|
|
|
|
|
| |
FIXME: Restore more other arch-dependent MachO tests. (eg. r126401 and r133856)
llvm-svn: 145925
|
|
|
|
|
|
| |
MC/MachO assumes x86.
llvm-svn: 145916
|
|
|
|
|
|
| |
rdar://10069056
llvm-svn: 145885
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it is separating the directory part from the basename of the FileName. Noticed
that this:
.file 1 "dir/foo"
when assembled got the two parts switched. Using the Mac OS X dwarfdump tool
it can be seen easily:
% dwarfdump -a a.out
include_directories[ 1] = 'foo'
Dir Mod Time File Len File Name
---- ---------- ---------- ---------------------------
file_names[ 1] 1 0x00000000 0x00000000 dir
...
Which should be:
...
include_directories[ 1] = 'dir'
Dir Mod Time File Len File Name
---- ---------- ---------- ---------------------------
file_names[ 1] 1 0x00000000 0x00000000 foo
llvm-svn: 143521
|
|
|
|
|
|
| |
without a base symbol that must not have a relocation entry.
llvm-svn: 139316
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
.cfi_startproc. e.g. libffi:
$ cat confopt.c
asm (".cfi_startproc\n\t.cfi_endproc");
int main () { return 0; }
Teach MC / dwarf emission to handle these cfi directives which essentially
create an empty frame.
rdar://10017184
llvm-svn: 138504
|
|
|
|
|
|
| |
instead. This matches what as does.
llvm-svn: 137414
|
|
|
|
|
|
| |
Hopefully make the x86-target-only Windows bots happy.
llvm-svn: 133856
|
|
|
|
| |
llvm-svn: 133823
|
|
|
|
| |
llvm-svn: 131149
|
|
|
|
|
|
| |
currently used, because variables don't get reported as being "defined".
llvm-svn: 130524
|
|
|
|
|
|
| |
sections based on FindAssociatedSection().
llvm-svn: 130523
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
|
|
| |
on Darwin.
llvm-svn: 128430
|
|
|
|
|
|
| |
been removed.
llvm-svn: 127812
|
|
|
|
| |
llvm-svn: 126401
|
|
|
|
| |
llvm-svn: 122630
|
|
|
|
| |
llvm-svn: 122583
|
|
|
|
| |
llvm-svn: 122547
|
|
|
|
| |
llvm-svn: 122441
|
|
|
|
| |
llvm-svn: 122438
|
|
|
|
|
|
| |
esp. important given that the LOCAL_SECTDIFF enumeration got redefined.
llvm-svn: 122412
|
|
|
|
| |
llvm-svn: 122407
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IsSymbolRefDifferenceFullyResolved(). For example, we will now fold away
something like:
--
_a:
...
L0:
...
L1:
...
.long (L1 - L0) / 2
--
llvm-svn: 122043
|
|
|
|
|
|
|
|
|
|
|
| |
With this we don't need the EffectiveSize field anymore. Without that field
LayoutFragment only updates offsets and we don't need to invalidate the
current fragment when it is relaxed (only the ones following it).
This is also a very small improvement in the accuracy of the layout info as
we now use the after relaxation size immediately.
llvm-svn: 121857
|
|
|
|
|
|
|
| |
Since we now don't update addresses so early, we might relax a bit more than
we need to. This is simillar to the issue in PR8467.
llvm-svn: 121856
|
|
|
|
|
|
| |
from ctor_dtor_count-2.cpp.
llvm-svn: 121152
|
|
|
|
| |
llvm-svn: 121114
|
|
|
|
| |
llvm-svn: 121107
|
|
|
|
| |
llvm-svn: 121085
|
|
|
|
|
|
|
| |
as llc + llvm-mc. This time ELF is not changed and I tested that llvm-gcc
bootstrap on darwin10 using darwin9's assembler and linker.
llvm-svn: 121006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
foo = a - b
.long foo
instead of just
.long a - b
First, on darwin9 64 bits the assembler produces the wrong result. Second,
if "a" is the end of the section all darwin assemblers (9, 10 and mc) will not
consider a - b to be a constant but will if the dummy foo is created.
Split how we handle these cases. The first one is something MC should take care
of. The second one has to be handled by the caller.
llvm-svn: 120889
|
|
|
|
|
|
|
|
|
|
|
| |
doing that if the target is darwin10 or newer.
This fixes
*) Direct object emission was producing objects without the workaround on
darwin9.
*) Assembly printing was producing objects with the workaround on linux.
llvm-svn: 120866
|
|
|
|
| |
llvm-svn: 120185
|
|
|
|
|
|
| |
instruction.
llvm-svn: 120147
|