| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
The previous change caused fast isel to not attempt handling any calls to
builtin functions. That included things like "printf" and caused some
noticable regressions in compile time. I wanted to avoid having fast isel
keep a separate list of functions that had to be kept in sync with what the
code in SelectionDAGBuilder.cpp was handling. I've resolved that here by
moving the list into TargetLibraryInfo. This is somewhat redundant in
SelectionDAGBuilder but it will ensure that we keep things consistent.
llvm-svn: 161263
|
|
|
|
|
|
|
|
|
|
| |
Fast isel doesn't currently have support for translating builtin function
calls to target instructions. For embedded environments where the library
functions are not available, this is a matter of correctness and not
just optimization. Most of this patch is just arranging to make the
TargetLibraryInfo available in fast isel. <rdar://problem/12008746>
llvm-svn: 161232
|
|
|
|
| |
llvm-svn: 159839
|
|
|
|
| |
llvm-svn: 159837
|
|
|
|
|
|
|
|
|
| |
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.
The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.
llvm-svn: 159312
|
|
|
|
|
|
|
|
|
| |
Factor out the expansion code into a function.
This change is to be enabled in clang.
rdar://9877866
llvm-svn: 157830
|
|
|
|
|
|
| |
Not all GR64 registers have sub_8bit sub-registers.
llvm-svn: 157150
|
|
|
|
| |
llvm-svn: 156662
|
|
|
|
| |
llvm-svn: 156658
|
|
|
|
|
|
|
|
|
| |
don't elide the branch instruction if it's the only one in the block,
otherwise it's ok.
PR9796 and rdar://11215207
llvm-svn: 154417
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
here but it has no other uses, then we have a problem. E.g.,
int foo (const int *x) {
char a[*x];
return 0;
}
If we assign 'a' a vreg and fast isel later on has to use the selection
DAG isel, it will want to copy the value to the vreg. However, there are
no uses, which goes counter to what selection DAG isel expects.
<rdar://problem/11134152>
llvm-svn: 153705
|
|
|
|
|
|
|
|
|
| |
execution-time regression for nsieve-bits on the ARMv7 -O0 -g nightly tester.
This may also improve compile-time on architectures that would otherwise
generate a libcall for urem (e.g., ARM) or fall back to the DAG selector.
rdar://10810716
llvm-svn: 153230
|
|
|
|
|
|
|
|
|
|
| |
a variable. The previous code would break the debug info changing
code invariant. This will regress debug info for arguments where
we elide the alloca created.
Fixes rdar://11066468
llvm-svn: 153074
|
|
|
|
| |
llvm-svn: 153073
|
|
|
|
| |
llvm-svn: 153072
|
|
|
|
| |
llvm-svn: 153071
|
|
|
|
|
|
| |
Part of rdar://8905263
llvm-svn: 152845
|
|
|
|
| |
llvm-svn: 152844
|
|
|
|
|
|
| |
Patch by Joe Groff!
llvm-svn: 151183
|
|
|
|
|
|
| |
to static data that should not be modified.
llvm-svn: 151134
|
|
|
|
| |
llvm-svn: 150848
|
|
|
|
| |
llvm-svn: 149730
|
|
|
|
| |
llvm-svn: 149331
|
|
|
|
|
|
| |
instructions that define aggregate types.
llvm-svn: 146492
|
|
|
|
|
|
| |
Disable while I investigate.
llvm-svn: 146331
|
|
|
|
| |
llvm-svn: 146327
|
|
|
|
|
|
| |
rdar://10530851
llvm-svn: 146276
|
|
|
|
|
|
| |
attempt.
llvm-svn: 145425
|
|
|
|
| |
llvm-svn: 145267
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ADDs. MaxOffs is used as a threshold to limit the size of the offset. Tradeoffs
being: (1) If we can't materialize the large constant then we'll cause fast-isel
to bail. (2) Too large of an offset can't be directly encoded in the ADD
resulting in a MOV+ADD. Generally not a bad thing because otherwise we would
have had ADD+ADD, but on Thumb this turns into a MOVS+MOVT+ADD. Working on a fix
for that. (3) Conversely, too low of a threshold we'll miss opportunities to
coalesce ADDs.
rdar://10412592
llvm-svn: 144886
|
|
|
|
|
|
| |
target-independent selector or the target-specific selector.
llvm-svn: 144833
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%arrayidx135 = getelementptr inbounds [4 x [4 x [4 x [4 x i32]]]]* %M0, i32 0, i64 0
%arrayidx136 = getelementptr inbounds [4 x [4 x [4 x i32]]]* %arrayidx135, i32 0, i64 %idxprom134
Prior to this commit, the GEP instruction that defines %arrayidx136 thought that
%arrayidx135 was a trivial kill. The GEP that defines %arrayidx135 doesn't
generate any code and thus %M0 gets folded into the second GEP. Thus, we need
to look through GEPs with all zero indices.
rdar://10443319
llvm-svn: 144730
|
|
|
|
|
|
| |
intended, but only by accident.
llvm-svn: 141779
|
|
|
|
|
|
| |
trying to keep track of vreg in which it the arugment is copied. The LiveDebugVariable can keep track of variable's ranges.
llvm-svn: 139330
|
|
|
|
|
|
| |
and its use.
llvm-svn: 137993
|
|
|
|
| |
llvm-svn: 135454
|
|
|
|
|
|
|
|
|
| |
ambiguity
errors like the one corrected by r135261. Migrate all LLVM callers of the old
constructor to the new one.
llvm-svn: 135431
|
|
|
|
|
|
|
|
| |
at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.
[take 2]
llvm-svn: 135423
|
|
|
|
| |
llvm-svn: 135375
|
|
|
|
| |
llvm-svn: 135040
|
|
|
|
| |
llvm-svn: 134116
|
|
|
|
|
|
|
|
| |
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.
llvm-svn: 134021
|
|
|
|
|
|
| |
at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.
llvm-svn: 133953
|
|
|
|
| |
llvm-svn: 133821
|
|
|
|
| |
llvm-svn: 132676
|
|
|
|
|
|
|
|
|
|
| |
simpler and more consistent.
The practical effects here are that x86-64 fast-isel can now handle trunc from i8 to i1, and ARM fast-isel can handle many more constructs involving integers narrower than 32 bits (including loads, stores, and many integer casts).
rdar://9437928 .
llvm-svn: 132099
|
|
|
|
| |
llvm-svn: 131420
|
|
|
|
| |
llvm-svn: 131419
|
|
|
|
|
|
| |
clang generates for cases like this, but it should become more useful soon.
llvm-svn: 131417
|
|
|
|
|
|
| |
intrinsic from the x86 code to the generic code.
llvm-svn: 131332
|