Dale Johannesen
2f6b6d6fb0
Fix type mismatch error in PPC Altivec (only causes
...
a problem when asserts are on). From vecLib.
llvm-svn: 42959
2007-10-14 01:58:32 +00:00
Dale Johannesen
19db093b35
Disable some compile-time optimizations on PPC
...
long double.
llvm-svn: 42958
2007-10-14 01:56:47 +00:00
Steve Naroff
5811baf1a0
- Added Sema::AddFactoryMethodToGlobalPool and Sema::AddInstanceMethodToGlobalPool and DenseMaps. This will allow us to efficiently lookup a method from a selector given no type information (for the "id" data type).
...
- Fixed some funky "}
else {" indentation in Sema::ActOnAddMethodsToObjcDecl(). I'd prefer we stay away from this style...it wastes space and isn't any easier to read (from my perspective, at least:-)
- Changed Parser::ParseObjCInterfaceDeclList() to only call Action::ActOnAddMethodsToObjcDecl() when it actually has methods to add (since most interface have methods, this is a very minor cleanup).
llvm-svn: 42957
2007-10-14 00:58:41 +00:00
Gordon Henriksen
a699c4dc65
Fixing a typo. Found by Kevin André!
...
llvm-svn: 42956
2007-10-14 00:34:53 +00:00
Duncan Sands
29af26f147
Clarify that fastcc has a problem with nested function
...
trampolines, rather than with nested functions themselves.
llvm-svn: 42955
2007-10-13 07:38:37 +00:00
Chris Lattner
f47e30627a
Enhance the truncstore optimization code to handle shifted
...
values and propagate demanded bits through them in simple cases.
This allows this code:
void foo(char *P) {
strcpy(P, "abc");
}
to compile to:
_foo:
ldrb r3, [r1]
ldrb r2, [r1, #+1]
ldrb r12, [r1, #+2]!
ldrb r1, [r1, #+1]
strb r1, [r0, #+3]
strb r2, [r0, #+1]
strb r12, [r0, #+2]
strb r3, [r0]
bx lr
instead of:
_foo:
ldrb r3, [r1, #+3]
ldrb r2, [r1, #+2]
orr r3, r2, r3, lsl #8
ldrb r2, [r1, #+1]
ldrb r1, [r1]
orr r2, r1, r2, lsl #8
orr r3, r2, r3, lsl #16
strb r3, [r0]
mov r2, r3, lsr #24
strb r2, [r0, #+3]
mov r2, r3, lsr #16
strb r2, [r0, #+2]
mov r3, r3, lsr #8
strb r3, [r0, #+1]
bx lr
testcase here: test/CodeGen/ARM/truncstore-dag-combine.ll
This also helps occasionally for X86 and other cases not involving
unaligned load/stores.
llvm-svn: 42954
2007-10-13 06:58:48 +00:00
Chris Lattner
2ce649ebea
new testcase
...
llvm-svn: 42953
2007-10-13 06:56:18 +00:00
Chris Lattner
5e6fe054a2
Add a simple optimization to simplify the input to
...
truncate and truncstore instructions, based on the
knowledge that they don't demand the top bits.
llvm-svn: 42952
2007-10-13 06:35:54 +00:00
Anders Carlsson
d5f857f2e5
Fix an incorrect assertion.
...
llvm-svn: 42951
2007-10-13 05:52:34 +00:00
Neil Booth
c799fe9ed9
If the power of 5 is exact, and the reciprocal exact, the error is zero not one half-ulps. This prevents an infinite loop in rare cases.
...
llvm-svn: 42950
2007-10-13 03:34:08 +00:00
Evan Cheng
f86204baf4
Fix test case.
...
llvm-svn: 42949
2007-10-13 03:14:06 +00:00
Evan Cheng
54bec86754
New tests.
...
llvm-svn: 42948
2007-10-13 03:10:54 +00:00
Evan Cheng
b63076504e
Local spiller optimization:
...
Turn this:
movswl %ax, %eax
movl %eax, -36(%ebp)
xorl %edi, -36(%ebp)
into
movswl %ax, %eax
xorl %edi, %eax
movl %eax, -36(%ebp)
by unfolding the load / store xorl into an xorl and a store when we know the
value in the spill slot is available in a register. This doesn't change the
number of instructions but reduce the number of times memory is accessed.
Also unfold some load folding instructions and reuse the value when similar
situation presents itself.
llvm-svn: 42947
2007-10-13 02:50:24 +00:00
Evan Cheng
7082dcf605
Change unfoldMemoryOperand(). User is now responsible for passing in the
...
register used by the unfolded instructions. User can also specify whether to
unfold the load, the store, or both.
llvm-svn: 42946
2007-10-13 02:35:06 +00:00
Evan Cheng
9490e0d078
Optionally create a MachineInstr without default implicit operands.
...
llvm-svn: 42945
2007-10-13 02:23:01 +00:00
Chris Lattner
6a91cc03ad
haha, my devious plot is complete:
...
$ clang rewrite.c -rewrite-test
prints:
int foo() {
b: foo();
f: foo();
foo();
}
for:
int foo() {
b: foo();
f: foo();
foo();
}
amazing.
llvm-svn: 42944
2007-10-13 00:46:29 +00:00
Anders Carlsson
a7408e742a
Add __builtin_va_list definitions for x86_64 and ppc64.
...
llvm-svn: 42943
2007-10-13 00:45:48 +00:00
Chris Lattner
2a8ab05f5f
With this I can now insert stuff before tabs, woo.
...
llvm-svn: 42942
2007-10-13 00:21:23 +00:00
Chris Lattner
58bad341bc
Woo, tab deletion now works. Next lets see if we can
...
insert stuff.
llvm-svn: 42941
2007-10-13 00:17:04 +00:00
Chris Lattner
2fcf1b83c1
another step forward in rewriter stuff. This still has
...
some incredibly subtle details that I'm working on getting
right.
llvm-svn: 42940
2007-10-13 00:11:23 +00:00
Anders Carlsson
24ebce6fca
Generate code for va_start and va_end.
...
llvm-svn: 42939
2007-10-12 23:56:29 +00:00
Fariborz Jahanian
fd0312ed79
Patch to check for duplicate method decls in protocols.
...
llvm-svn: 42938
2007-10-12 23:43:31 +00:00
Chris Lattner
bee82b0675
remove dead method with bogus comment.
...
llvm-svn: 42937
2007-10-12 23:18:19 +00:00
Fariborz Jahanian
ecfe4f1453
Check and diagnose that objective-c objects may not be statically allocated.
...
llvm-svn: 42936
2007-10-12 22:10:42 +00:00
Arnold Schwaighofer
e8d0bf2669
Correcting the corrections. Bad bad baaad emacs!
...
llvm-svn: 42935
2007-10-12 21:53:12 +00:00
Arnold Schwaighofer
1f0da1fefb
Corrected many typing errors. And removed 'nest' parameter handling
...
for fastcc from X86CallingConv.td. This means that nested functions
are not supported for calling convention 'fastcc'.
llvm-svn: 42934
2007-10-12 21:30:57 +00:00
Ted Kremenek
41362cea7b
Added notion of '*' specified format width/specifiers when checking
...
printf format strings. Added type checking to see if the matching
width/precision argument was of type 'int'.
Thanks to Anders Carlsson for reporting this missing feature.
llvm-svn: 42933
2007-10-12 20:51:52 +00:00
Dan Gohman
e0ad9ea7cd
Fix this test to not depend on the assembly output containing something
...
that includes the string "st". This probably fixes the regression on
Darwin.
llvm-svn: 42932
2007-10-12 20:42:14 +00:00
Chris Lattner
2c06f7ea45
add a new SM::getDecomposedFileLoc method.
...
llvm-svn: 42931
2007-10-12 20:24:19 +00:00
Devang Patel
371e6ca690
Dest type is always i8 *. This allows some simplification.
...
Do not filter memmove.
llvm-svn: 42930
2007-10-12 20:10:21 +00:00
Devang Patel
da53e9c9c1
t
...
llvm-svn: 42929
2007-10-12 20:04:24 +00:00
Fariborz Jahanian
02fbb68e85
Fixed typo in comment.
...
llvm-svn: 42928
2007-10-12 19:53:08 +00:00
Gordon Henriksen
3fb03e4080
Fix ocaml bindings for picky linkers. :)
...
Thanks to Török Edvin for helping to track this down.
llvm-svn: 42927
2007-10-12 19:48:13 +00:00
Fariborz Jahanian
c7afeebb12
Fixed a @compatible_alias bug. In the process, discovered unnecessary 2ndry lookup
...
ok class names and streamlined this logic to do the lookup once.
llvm-svn: 42926
2007-10-12 19:38:20 +00:00
Duncan Sands
a6286bd502
Due to the new tail call optimization, trampolines can no
...
longer be created for fastcc functions.
llvm-svn: 42925
2007-10-12 19:37:31 +00:00
Dale Johannesen
61c574fc51
ppc long double. Implement fabs and fneg.
...
llvm-svn: 42924
2007-10-12 19:02:17 +00:00
Steve Naroff
b915146a5d
Replace one FIXME with another. We handle protocols just fine now. The ObjC decl will only be 0 when we have an error on the ObjC decl. I would prefer we pass in a decl that is marked as invalid. I don't think this is critical to fix now, however I'd like us to be consistent. There are currently many places that don't mark the decl as invalid (which need to be fixed)...
...
llvm-svn: 42923
2007-10-12 18:49:25 +00:00
Evan Cheng
409fa443fc
Update.
...
llvm-svn: 42922
2007-10-12 18:22:55 +00:00
Chris Lattner
e6f1c3813d
don't use intptr_t without including it.
...
llvm-svn: 42921
2007-10-12 18:16:23 +00:00
Chris Lattner
ad618f66e6
Fix a bug in my patch last night that broke InstCombine/2007-10-12-Crash.ll
...
llvm-svn: 42920
2007-10-12 18:05:47 +00:00
Dale Johannesen
a1a4a9ebfa
Implement i64->ppcf128 conversions.
...
llvm-svn: 42919
2007-10-12 17:52:03 +00:00
Chris Lattner
4c461477bd
Make this compute the correct offset, handling alignment of the element
...
pointer correctly.
llvm-svn: 42918
2007-10-12 17:49:52 +00:00
Anders Carlsson
431ef632cb
Add some more diagnostics for va_start, fix tests so they pass with these new diags.
...
llvm-svn: 42917
2007-10-12 17:48:41 +00:00
Evan Cheng
1410b8512c
Did mean to leave this in. INSERT_SUBREG isn't being coalesced yet.
...
llvm-svn: 42916
2007-10-12 17:16:50 +00:00
Fariborz Jahanian
d52cd41630
Fixed a bug whereby, struct tag name matches a typedef/objc-class name
...
and hid them.
llvm-svn: 42915
2007-10-12 16:34:10 +00:00
Steve Naroff
b213da2a70
Temporary fix to test case. This area is currently under construction...test case will be changing again soon.
...
llvm-svn: 42914
2007-10-12 16:15:17 +00:00
Neil Booth
d502a82092
Remove duplicate comment.
...
llvm-svn: 42913
2007-10-12 16:05:57 +00:00
Neil Booth
b93d90e98c
Implement correctly-rounded decimal->binary conversion, i.e. conversion
...
from user input strings.
Such conversions are more intricate and subtle than they may appear;
it is unlikely I have got it completely right first time. I would
appreciate being informed of any bugs and incorrect roundings you
might discover.
llvm-svn: 42912
2007-10-12 16:02:31 +00:00
Neil Booth
e9dbe094aa
Remove a field that was never used.
...
llvm-svn: 42911
2007-10-12 15:35:10 +00:00
Neil Booth
146fdb3eeb
If we're trying to be arbitrary precision, unsigned char clearly won't cut it. Needed for dec->bin conversions.
...
llvm-svn: 42910
2007-10-12 15:33:27 +00:00