| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 20243
|
| |
|
|
| |
llvm-svn: 20237
|
| |
|
|
| |
llvm-svn: 20232
|
| |
|
|
| |
llvm-svn: 20231
|
| |
|
|
|
|
| |
for 0.0 and -0.0.
llvm-svn: 20230
|
| |
|
|
|
|
| |
folding of argument loads with instructions that are not in the entry block.
llvm-svn: 20228
|
| |
|
|
|
|
|
|
|
|
|
|
| |
and handle incomplete control dependences correctly. This fixes:
Regression/Transforms/ADCE/dead-phi-edge.ll
-> a missed optimization
Regression/Transforms/ADCE/dead-phi-edge.ll
-> a compiler crash distilled from QT4
llvm-svn: 20227
|
| |
|
|
|
|
|
|
| |
Regression/Transforms/IndVarsSimplify/2005-02-17-TruncateExprCrash.ll
and PR515.
llvm-svn: 20224
|
| |
|
|
| |
llvm-svn: 20208
|
| |
|
|
| |
llvm-svn: 20207
|
| |
|
|
|
|
| |
for the suggestion! :)
llvm-svn: 20203
|
| |
|
|
| |
llvm-svn: 20202
|
| |
|
|
| |
llvm-svn: 20201
|
| |
|
|
|
|
|
|
|
|
| |
handling zero length files a little more intelligently. If both files are
zero length then we return 0 (true) indicating a match. If only one of the
files is zero length then we return 1 (false) indicating that the files
differ. If the files don't agree in length then they can't match so we
skip the first loop that looks for a quick match.
llvm-svn: 20200
|
| |
|
|
|
|
|
|
| |
to save and restore the LR register on entry and exit of a leaf function
that needed to access globals or the constant pool. This should hopefully
fix oscar from sending the PPC tester spinning out of control.
llvm-svn: 20197
|
| |
|
|
| |
llvm-svn: 20195
|
| |
|
|
| |
llvm-svn: 20194
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
void %test(int** %P) {
%A = volatile load int** %P
ret void
}
void %test2(int*** %Q) {
%P = load int*** %Q
volatile store int** %P, int*** %Q
ret void
}
instead of emitting:
void test(int **l1_P) {
int *l2_A;
l2_A = (int **((volatile int **)l1_P));
return;
}
void test2(int ***l2_Q) {
int **l1_P;
l1_P = *l2_Q;
*((volatile int ***)l2_Q) = l1_P;
return;
}
... which is loading/storing volatile pointers, not through volatile pointers,
emit this (which is right):
void test(int **l1_P) {
int *l3_A;
l3_A = *((int * volatile*)l1_P);
return;
}
void test2(int ***l2_Q) {
int **l1_P;
l1_P = *l2_Q;
*((int ** volatile*)l2_Q) = l1_P;
return;
}
llvm-svn: 20191
|
| |
|
|
| |
llvm-svn: 20184
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
prints:
getelementptr (int* %A, int -1)
as: "(A) - 4" instead of "(A) + 18446744073709551612", which makes the
assembler much happier.
This fixes test/Regression/CodeGen/X86/2005-02-14-IllegalAssembler.ll,
and Benchmarks/Prolangs-C/cdecl with LLC on X86.
llvm-svn: 20183
|
| |
|
|
| |
llvm-svn: 20181
|
| |
|
|
|
|
| |
printing help output or version info.
llvm-svn: 20180
|
| |
|
|
| |
llvm-svn: 20179
|
| |
|
|
|
|
| |
Volatile loads and stores need to emit volatile pointer operations in C.
llvm-svn: 20177
|
| |
|
|
| |
llvm-svn: 20172
|
| |
|
|
| |
llvm-svn: 20170
|
| |
|
|
| |
llvm-svn: 20168
|
| |
|
|
|
|
| |
This causes garbage to be printed out after error messages.
llvm-svn: 20165
|
| |
|
|
|
|
|
|
| |
both cases they are looking for non-external variables/functions that do
not have internal linkage. Using "!isExternal()" is a little more
understandable than "hasInitializer()"
llvm-svn: 20155
|
| |
|
|
| |
llvm-svn: 20154
|
| |
|
|
| |
llvm-svn: 20153
|
| |
|
|
|
|
|
|
|
| |
Otherwise, clients who call ParseAllFunctionBodies will attempt to parse
the function bodies twice, which is (uh) very very bad (tm).
This fixes gccld on python.
llvm-svn: 20152
|
| |
|
|
|
|
|
|
| |
table for archives in common cases, and prevents trying to resolve a
external reference with an internal reference. This shrinks the libpython.a
symbol table from 126302 to 19770 bytes.
llvm-svn: 20151
|
| |
|
|
| |
llvm-svn: 20148
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
infinite loops (using the new replaceSymbolicValuesWithConcrete method).
This patch reverts this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20050131/023830.html
... which was an attempted fix for this problem. Unfortunately, that patch
caused test/Regression/Transforms/IndVarsSimplify/exit_value_tests.llx to fail
and slightly castrated the entire analysis. This patch fixes it right.
This patch is dedicated to jeffc, for making me deal with this. :)
llvm-svn: 20146
|
| |
|
|
| |
llvm-svn: 20143
|
| |
|
|
| |
llvm-svn: 20142
|
| |
|
|
| |
llvm-svn: 20141
|
| |
|
|
| |
llvm-svn: 20137
|
| |
|
|
|
|
|
| |
This finally resolves PR502, PR450,
and test/Regression/Linker/2005-02-12-ConstantGlobals{,-2}.ll correctly
llvm-svn: 20135
|
| |
|
|
|
|
| |
and PR504.
llvm-svn: 20129
|
| |
|
|
| |
llvm-svn: 20110
|
| |
|
|
|
|
|
| |
global with an alloca, which eventually gets promoted into a
register. This enables a lot of other optimizations later on.
llvm-svn: 20109
|
| |
|
|
|
|
| |
Fixed bug in graph so that phi ite diff edges are added.
llvm-svn: 20108
|
| |
|
|
| |
llvm-svn: 20107
|
| |
|
|
|
|
| |
policy... Also, optimize many function calls with pc-relative calls (partial prologue skipping for that case coming soon), try to fix the random jumps to strange places problem by pesimizing div et. al. register usage and fixing up GP before using, some calling convention tweaks, and make frame pointer unallocatable (not strickly necessary, but let's go for correctness first)
llvm-svn: 20106
|
| |
|
|
| |
llvm-svn: 20105
|
| |
|
|
|
|
| |
* Align comments with tablegen elements
llvm-svn: 20103
|
| |
|
|
|
|
|
| |
Timers' section. Since these are random timers in the program it doesn't
make sense to sum them up.
llvm-svn: 20090
|
| |
|
|
| |
llvm-svn: 20089
|