| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
defaults to being ELF.
llvm-svn: 77866
|
|
|
|
|
|
| |
no longer depends on TM!
llvm-svn: 77863
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.
Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.
This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.
llvm-svn: 77294
|
|
|
|
|
|
| |
implementations that need it, rearrange ELFTAI.
llvm-svn: 77236
|
|
|
|
| |
llvm-svn: 77198
|
|
|
|
|
|
|
| |
should know about them. PECoff doesn't share these, and I want all sections
to be created by object-file-specific code.
llvm-svn: 77196
|
|
|
|
|
|
|
|
| |
getOrCreateSection
instead.
llvm-svn: 77186
|
|
|
|
|
|
| |
instead and drive things based off of that.
llvm-svn: 77184
|
|
|
|
|
|
|
|
|
| |
'unnamed' bss section, but some impls would want a named one. Since
they don't have consistent behavior, just make each target do their
own thing, instead of doing something "sortof common" then having
targets change immutable objects later.
llvm-svn: 77165
|
|
|
|
|
|
| |
just use a smallstring instead.
llvm-svn: 77144
|
|
|
|
| |
llvm-svn: 77138
|
|
|
|
| |
llvm-svn: 77134
|
|
|
|
| |
llvm-svn: 77133
|
|
|
|
|
|
| |
simplify targets.
llvm-svn: 77132
|
|
|
|
|
|
| |
relocations.
llvm-svn: 77130
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
group instead of a bunch of random unrelated ideas. Provide predicates
to categorize a SectionKind into a group, and use them instead of
getKind() throughout the code.
This also renames a ton of SectionKinds to be more consistent and
evocative, and adds a huge number of comments on the enums so that
I will hopefully be able to remember how this stuff works long from
now.
llvm-svn: 77129
|
|
|
|
| |
llvm-svn: 77116
|
|
|
|
| |
llvm-svn: 77110
|
|
|
|
|
|
| |
an enum.
llvm-svn: 77096
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Spell SectionFlags::Writeable as "Writable".
2. Add predicates for deriving SectionFlags from SectionKinds.
3. Sink ELF-specific getSectionPrefixForUniqueGlobal impl into
ELFTargetAsmInfo.
4. Fix SectionFlagsForGlobal to know that BSS/ThreadBSS has the
BSS bit set (the real fix for PR4619).
5. Fix isSuitableForBSS to not put globals with explicit sections
set in BSS (which was the reason #4 wasn't fixed earlier).
6. Remove my previous hack for PR4619.
llvm-svn: 77085
|
|
|
|
|
|
|
|
| |
It's classifications now include elf-specific discriminators. Targets
that don't have these features (like darwin and pecoff) simply treat
data.rel like data, etc.
llvm-svn: 76993
|
|
|
|
|
|
| |
pass it in instead of recomputing it.
llvm-svn: 76990
|
|
|
|
| |
llvm-svn: 76976
|
|
|
|
|
|
| |
implementation, eliminating a dupe.
llvm-svn: 76953
|
|
|
|
| |
llvm-svn: 76951
|
|
|
|
|
|
| |
and simplify some other code.
llvm-svn: 76949
|
|
|
|
|
|
|
|
| |
The later doesn't depend on any crazy LLVM IR stuff, and this
pulls the concatenation of prefix with GV name (the root problem behind
PR4584) out one level.
llvm-svn: 76948
|
|
|
|
| |
llvm-svn: 76945
|
|
|
|
| |
llvm-svn: 76938
|
|
|
|
|
|
| |
a sad mistake that is regretted. :)
llvm-svn: 76935
|
|
|
|
|
|
| |
a better solution for it in the future.
llvm-svn: 76818
|
|
|
|
|
|
|
|
| |
on linux platforms. The binutils assembler does not
recognize the "s" flag, see for example
http://sourceware.org/binutils/docs/as/Section.html
llvm-svn: 76733
|
|
|
|
|
|
| |
only caller.
llvm-svn: 76710
|
|
|
|
|
|
| |
updating a mips testcase to expect it.
llvm-svn: 76707
|
|
|
|
| |
llvm-svn: 76706
|
|
|
|
|
|
|
|
| |
a new getSectionForMergableConstant hook. This removes one dependence
of TAI on Type, and provides the hook with enough info to make the
right decision based on whether the global has relocations etc.
llvm-svn: 76705
|
|
|
|
|
|
|
|
|
| |
Constant::getRelocationInfo(), which has a much simpler
to use API. It still should not be part of libvmcore, but
is better than it was. Also teach it to be smart about
hidden visibility.
llvm-svn: 76700
|
|
|
|
| |
llvm-svn: 76689
|
|
|
|
|
|
|
| |
virtual. Just inline it into its two current call sites in preparation
for simplifying the code.
llvm-svn: 76686
|
|
|
|
| |
llvm-svn: 76654
|
|
|
|
|
|
|
| |
implemented exactly the same way as its ELFTargetAsmInfo subclass
has them.
llvm-svn: 76653
|
|
|
|
|
|
|
|
|
| |
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.
This is plumbing, so we don't have a use of it yet. More to come, etc.
llvm-svn: 76385
|
|
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
|
|
|
|
|
|
|
|
| |
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379
|
|
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
|
|
|
|
|
| |
data.rel{.ro}, not .local
llvm-svn: 68036
|
|
|
|
|
|
| |
simplifies code and also ensures correctness.
llvm-svn: 68032
|
|
|
|
| |
llvm-svn: 68031
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.
llvm-svn: 66339
|
|
|
|
|
|
|
|
|
|
|
|
| |
mergeable string section. I don't see any bad impact of such decision
(rather then placing it into mergeable const section, as it was before),
but at least Darwin linker won't complain anymore.
The problem in LLVM is that we don't have special type for string constants
(like gcc does). Even more, we have two separate types: ConstatArray for non-null
strings and ConstantAggregateZero for null stuff.... It's a bit weird :)
llvm-svn: 63142
|