| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 79140
|
| |
|
|
| |
llvm-svn: 79123
|
| |
|
|
| |
llvm-svn: 79118
|
| |
|
|
| |
llvm-svn: 79117
|
| |
|
|
| |
llvm-svn: 79116
|
| |
|
|
| |
llvm-svn: 79115
|
| |
|
|
| |
llvm-svn: 79114
|
| |
|
|
| |
llvm-svn: 79113
|
| |
|
|
| |
llvm-svn: 79112
|
| |
|
|
|
|
|
| |
the register save area if %al is 0. This avoids touching xmm
regsiters when they aren't actually used.
llvm-svn: 79061
|
| |
|
|
| |
llvm-svn: 79009
|
| |
|
|
|
|
|
| |
syntactically as a string, very similiar to what Chris did with MachO.
The parsing support and validation is not introduced yet.
llvm-svn: 78890
|
| |
|
|
|
|
| |
PrintUnmangledNameSafely.
llvm-svn: 78878
|
| |
|
|
| |
llvm-svn: 78838
|
| |
|
|
|
|
| |
this test failed consistently on a Darwin build.
llvm-svn: 78822
|
| |
|
|
| |
llvm-svn: 78801
|
| |
|
|
| |
llvm-svn: 78800
|
| |
|
|
| |
llvm-svn: 78798
|
| |
|
|
| |
llvm-svn: 78796
|
| |
|
|
| |
llvm-svn: 78795
|
| |
|
|
|
|
|
|
|
|
|
| |
MERGE_VALUES nodes. Replacing the result values with the
operands in one MERGE_VALUES node may cause another
MERGE_VALUES node be CSE'd with the first one, and bring
its uses along, so that the first one isn't dead, as this
code expects. Fix this by iterating until the node is
really dead. This fixes PR4699.
llvm-svn: 78619
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of syntactically as a string. This means that it keeps track of the
segment, section, flags, etc directly and asmprints them in the right format.
This also includes parsing and validation support for llvm-mc and
"attribute(section)", so we should now start getting errors about invalid
section attributes from the compiler instead of the assembler on darwin.
Still todo:
1) Uniquing of darwin mcsections
2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h]
3) there are a few FIXMEs, for example what is the syntax to get the
S_GB_ZEROFILL segment type?
llvm-svn: 78547
|
| |
|
|
|
|
|
|
|
| |
bytes for F2 0F 38 and propagate. Add a FIXME for a set
of possibilities which correspond to intrinsics already used.
New test.
llvm-svn: 78508
|
| |
|
|
| |
llvm-svn: 78443
|
| |
|
|
| |
llvm-svn: 78441
|
| |
|
|
|
|
| |
is more tolerant of whitespace differences.
llvm-svn: 78439
|
| |
|
|
|
|
| |
moment, but it's a fragile area.
llvm-svn: 78358
|
| |
|
|
|
|
| |
produced a CFG it wasn't prepared for.
llvm-svn: 78351
|
| |
|
|
| |
llvm-svn: 78322
|
| |
|
|
| |
llvm-svn: 78315
|
| |
|
|
|
|
|
| |
types don't have any return values, from CodeGen's perspective.
This fixes PR4688.
llvm-svn: 78311
|
| |
|
|
| |
llvm-svn: 78300
|
| |
|
|
|
|
|
|
| |
by aggressive chain operand optimization. UpdateNodeOperands
does not modify the node in place if it would result in
a node identical to an existing node.
llvm-svn: 78297
|
| |
|
|
|
|
|
|
| |
and high-bits values in ways that weren't correct for integer
types wider than 64 bits. This fixes a miscompile in
PPMacroExpansion.cpp in clang on x86-64.
llvm-svn: 78295
|
| |
|
|
|
|
|
| |
PR4572. A few tests have some minor code regressions due to different
coalescing.
llvm-svn: 78217
|
| |
|
|
|
|
| |
command-line options.
llvm-svn: 78204
|
| |
|
|
| |
llvm-svn: 78165
|
| |
|
|
|
|
| |
MMX arguments. This fixes PR4684.
llvm-svn: 78163
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.
This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.
This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.
llvm-svn: 78142
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of registers.
When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.
In the test case we have this code:
Live Ins: %R0 %R1 %R2
%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:
*** Bad machine code: Redefining a live physical register ***
- function: f
- basic block: 0x18358c0 (#0)
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.
The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>
Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.
llvm-svn: 78093
|
| |
|
|
|
|
| |
__TEXT,__ustring section on darwin.
llvm-svn: 78068
|
| |
|
|
|
|
| |
section on ELF targets.
llvm-svn: 78066
|
| |
|
|
|
|
| |
and provide a different set of call-clobberred registers.
llvm-svn: 77962
|
| |
|
|
| |
llvm-svn: 77956
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is not just a matter of passing in the target triple from the module;
currently backends are making decisions based on the build and host
architecture. The goal is to migrate to making these decisions based off of the
triple (in conjunction with the feature string). Thus most clients pass in the
target triple, or the host triple if that is empty.
This has one important change in the way behavior of the JIT and llc.
For the JIT, it was previously selecting the Target based on the host
(naturally), but it was setting the target machine features based on the triple
from the module. Now it is setting the target machine features based on the
triple of the host.
For LLC, -march was previously only used to select the target, the target
machine features were initialized from the module's triple (which may have been
empty). Now the target triple is taken from the module, or the host's triple is
used if that is empty. Then the triple is adjusted to match -march.
The take away is that -march for llc is now used in conjunction with the host
triple to initialize the subtarget. If users want more deterministic behavior
from llc, they should use -mtriple, or set the triple in the input module.
llvm-svn: 77946
|
| |
|
|
|
|
| |
Fixes PR4669
llvm-svn: 77940
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to:
.quad X
even on a 32-bit system, where X is not 64-bits. There isn't much that
we can do here, so we just print:
.quad ((X) & 4294967295)
instead.
llvm-svn: 77818
|
| |
|
|
| |
llvm-svn: 77792
|
| |
|
|
|
|
|
|
|
|
|
|
| |
padding is disabled, tabs get replaced by spaces except in the case of
the first operand, where the tab is output to line up the operands after
the mnemonics.
Add some better comments and eliminate redundant code.
Fix some testcases to not assume tabs.
llvm-svn: 77740
|
| |
|
|
|
|
|
|
| |
into the mergable section if it is one of our special cases. This could
obviously be improved, but this is the minimal fix and restores us to the
previous behavior.
llvm-svn: 77679
|