- Jan 07, 2008
-
-
Chris Lattner authored
flags that can be set. Add predicates for the ones lacking it, and switch some clients over to using the predicates instead of Flags directly. llvm-svn: 45690
-
Chris Lattner authored
llvm-svn: 45689
-
Chris Lattner authored
isConditionalBranch() and isUnconditionalBranch() methods. llvm-svn: 45688
-
Chris Lattner authored
Evan, please review the comments I added to getNumDefs to make sure that they are accurate, thx. llvm-svn: 45687
-
Chris Lattner authored
TargetInstrDescriptor class and shrink to 16-bits, saving a word in TargetInstrDescriptor. Add some comments. llvm-svn: 45686
-
Chris Lattner authored
llvm-svn: 45685
-
Chris Lattner authored
just unconditionally use the def name of the instruction. llvm-svn: 45684
-
Chris Lattner authored
llvm-svn: 45683
-
Nate Begeman authored
llvm-svn: 45682
-
Gordon Henriksen authored
llvm-svn: 45681
-
Chris Lattner authored
llvm-svn: 45680
-
Chris Lattner authored
llvm-svn: 45679
-
Chris Lattner authored
into TargetInstrDescriptor from TargetInstrInfo. llvm-svn: 45678
-
Chris Lattner authored
over to using them, instead of diddling Flags directly. Change the various flags from const variables to enums. llvm-svn: 45677
-
Gordon Henriksen authored
providing a misleading facility. It's used once in the MIPS backend and hardcoded as "\t.globl\t" everywhere else. llvm-svn: 45676
-
Gordon Henriksen authored
llvm-svn: 45675
-
Chris Lattner authored
that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
-
Owen Anderson authored
llvm-svn: 45673
-
Owen Anderson authored
Some day I'll get it all moved over... llvm-svn: 45672
-
Gordon Henriksen authored
llvm-svn: 45671
-
Gordon Henriksen authored
ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) llvm-svn: 45670
-
Gordon Henriksen authored
up to the various compiler pipelines. This doesn't actually add support for any GC algorithms, which means it temporarily breaks a few tests. To be fixed shortly. llvm-svn: 45669
-
Chris Lattner authored
llvm-svn: 45668
-
Chris Lattner authored
llvm-svn: 45667
-
- Jan 06, 2008
-
-
Chris Lattner authored
llvm-svn: 45666
-
Chris Lattner authored
llvm-svn: 45665
-
Chris Lattner authored
pretty print the type name for void. llvm-svn: 45664
-
Gordon Henriksen authored
fiends. Change Makefile.ocaml to not touch CFLAGS. llvm-svn: 45663
-
Chris Lattner authored
llvm-svn: 45662
-
Chris Lattner authored
llvm-svn: 45661
-
Chris Lattner authored
llvm-svn: 45660
-
Chris Lattner authored
llvm-svn: 45659
-
Duncan Sands authored
direct calls bails out unless caller and callee have essentially equivalent parameter attributes. This is illogical - the callee's attributes should be of no relevance here. Rework the logic, which incidentally fixes a crash when removed arguments have attributes. llvm-svn: 45658
-
Duncan Sands authored
a direct call with cast parameters and cast return value (if any), instcombine was prepared to cast any non-void return value into any other, whether castable or not. Add a new predicate for testing whether casting is valid, and check it both for the return value and (as a cleanup) for the parameters. llvm-svn: 45657
-
Chris Lattner authored
llvm-svn: 45656
-
Duncan Sands authored
llvm-svn: 45655
-
Chris Lattner authored
instead of "ISD::STORE". This allows us to mark target-specific dag nodes as storing (such as ppc byteswap stores). This allows us to remove more explicit isStore flags from the .td files. Finally, add a warning for when a .td file contains an explicit isStore and tblgen is able to infer it. llvm-svn: 45654
-
Chris Lattner authored
llvm-svn: 45653
-
Chris Lattner authored
llvm-svn: 45652
-
Chris Lattner authored
No functionality change. llvm-svn: 45651
-