- Feb 23, 2005
-
-
Chris Lattner authored
llvm-svn: 20274
-
- Feb 22, 2005
-
-
Andrew Lenharth authored
llvm-svn: 20273
-
Chris Lattner authored
Changing 'op' here caused us to not enter the store into a map, causing reemission of the code!! In practice, a simple loop like this: no_exit: ; preds = %no_exit, %entry %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ] ; <uint> [#uses=3] %tmp.4 = getelementptr "complex long double"* %P, uint %indvar, uint 0 ; <double*> [#uses=1] store double 0.000000e+00, double* %tmp.4 %indvar.next = add uint %indvar, 1 ; <uint> [#uses=2] %exitcond = seteq uint %indvar.next, %N ; <bool> [#uses=1] br bool %exitcond, label %return, label %no_exit was being code gen'd to: .LBBtest_1: # no_exit movl %edx, %esi shll $4, %esi movl $0, 4(%eax,%esi) movl $0, (%eax,%esi) incl %edx movl $0, (%eax,%esi) movl $0, 4(%eax,%esi) cmpl %ecx, %edx jne .LBBtest_1 # no_exit Note that we are doing 4 32-bit stores instead of 2. Now we generate: .LBBtest_1: # no_exit movl %edx, %esi incl %esi shll $4, %edx movl $0, (%eax,%edx) movl $0, 4(%eax,%edx) cmpl %ecx, %esi movl %esi, %edx jne .LBBtest_1 # no_exit This is much happier, though it would be even better if the increment of ESI was scheduled after the compare :-/ llvm-svn: 20265
-
Andrew Lenharth authored
llvm-svn: 20264
-
- Feb 20, 2005
-
-
Chris Lattner authored
ANY program that does not have all functions internalized. llvm-svn: 20258
-
Jeff Cohen authored
llvm-svn: 20256
-
Jeff Cohen authored
llvm-svn: 20255
-
- Feb 19, 2005
-
-
Chris Lattner authored
llvm-svn: 20253
-
Chris Lattner authored
WARNING: Type conflict between types named 'union.._604.'. Src=' %union.._604.'. Dest=' %union.._604.' llvm-svn: 20252
-
Jeff Cohen authored
llvm-svn: 20243
-
- Feb 18, 2005
-
-
Jeff Cohen authored
llvm-svn: 20237
-
- Feb 17, 2005
-
-
Misha Brukman authored
llvm-svn: 20232
-
Misha Brukman authored
llvm-svn: 20231
-
Chris Lattner authored
for 0.0 and -0.0. llvm-svn: 20230
-
Chris Lattner authored
Don't sink argument loads into loops or other bad places. This disables folding of argument loads with instructions that are not in the entry block. llvm-svn: 20228
-
Chris Lattner authored
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
-
Chris Lattner authored
and PR515. llvm-svn: 20224
-
- Feb 16, 2005
-
-
Jeff Cohen authored
llvm-svn: 20208
-
Tanya Lattner authored
llvm-svn: 20207
-
- Feb 15, 2005
-
-
Chris Lattner authored
for the suggestion! :) llvm-svn: 20203
-
Chris Lattner authored
llvm-svn: 20202
-
Misha Brukman authored
llvm-svn: 20201
-
Reid Spencer authored
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
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 20195
-
Chris Lattner authored
llvm-svn: 20194
-
Chris Lattner authored
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
-
- Feb 14, 2005
-
-
Chris Lattner authored
llvm-svn: 20184
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 20181
-
Chris Lattner authored
printing help output or version info. llvm-svn: 20180
-
Misha Brukman authored
llvm-svn: 20179
-
Chris Lattner authored
Volatile loads and stores need to emit volatile pointer operations in C. llvm-svn: 20177
-
Andrew Lenharth authored
llvm-svn: 20172
-
Chris Lattner authored
llvm-svn: 20170
-
Chris Lattner authored
llvm-svn: 20168
-
- Feb 13, 2005
-
-
Chris Lattner authored
This causes garbage to be printed out after error messages. llvm-svn: 20165
-
Reid Spencer authored
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
-
Chris Lattner authored
llvm-svn: 20154
-
Chris Lattner authored
llvm-svn: 20153
-