- Jan 15, 2011
-
-
Chris Lattner authored
realize that ConstantFoldTerminator doesn't preserve dominfo. llvm-svn: 123527
-
rdar://8785296Chris Lattner authored
The basic issue is that isel (very reasonably!) expects conditional branches to be folded, so CGP leaving around a bunch dead computation feeding conditional branches isn't such a good idea. Just fold branches on constants into unconditional branches. llvm-svn: 123526
-
Chris Lattner authored
llvm-svn: 123525
-
Chris Lattner authored
have objectsize folding recursively simplify away their result when it folds. It is important to catch this here, because otherwise we won't eliminate the cross-block values at isel and other times. llvm-svn: 123524
-
Chris Lattner authored
potentially invalidate it (like inline asm lowering) to be sunk into their proper place, cleaning up a ton of code. llvm-svn: 123523
-
Chris Lattner authored
rdar://8867482 llvm-svn: 123522
-
Douglas Gregor authored
template template parameter pack that cannot be fully expanded because its enclosing pack expansion could not be expanded. This form of TemplateName plays the same role as SubstTemplateTypeParmPackType and SubstNonTypeTemplateParmPackExpr do for template type parameter packs and non-type template parameter packs, respectively. We should now handle these multi-level pack expansion substitutions anywhere. The largest remaining gap in our variadic-templates support is that we cannot cope with non-type template parameter packs whose type is a pack expansion. llvm-svn: 123521
-
Chris Lattner authored
This fixes rdar://8808586 which observed that we used to compile: union xy { struct x { _Bool b[15]; } x; __attribute__((packed)) struct y { __attribute__((packed)) unsigned long b0to7; __attribute__((packed)) unsigned int b8to11; __attribute__((packed)) unsigned short b12to13; __attribute__((packed)) unsigned char b14; } y; }; struct x foo(union xy *xy) { return xy->x; } into: _foo: ## @foo movq (%rdi), %rax movabsq $1095216660480, %rcx ## imm = 0xFF00000000 andq %rax, %rcx movabsq $-72057594037927936, %rdx ## imm = 0xFF00000000000000 andq %rax, %rdx movzbl %al, %esi orq %rdx, %rsi movq %rax, %rdx andq $65280, %rdx ## imm = 0xFF00 orq %rsi, %rdx movq %rax, %rsi andq $16711680, %rsi ## imm = 0xFF0000 orq %rdx, %rsi movl %eax, %edx andl $-16777216, %edx ## imm = 0xFFFFFFFFFF000000 orq %rsi, %rdx orq %rcx, %rdx movabsq $280375465082880, %rcx ## imm = 0xFF0000000000 movq %rax, %rsi andq %rcx, %rsi orq %rdx, %rsi movabsq $71776119061217280, %r8 ## imm = 0xFF000000000000 andq %r8, %rax orq %rsi, %rax movzwl 12(%rdi), %edx movzbl 14(%rdi), %esi shlq $16, %rsi orl %edx, %esi movq %rsi, %r9 shlq $32, %r9 movl 8(%rdi), %edx orq %r9, %rdx andq %rdx, %rcx movzbl %sil, %esi shlq $32, %rsi orq %rcx, %rsi movl %edx, %ecx andl $-16777216, %ecx ## imm = 0xFFFFFFFFFF000000 orq %rsi, %rcx movq %rdx, %rsi andq $16711680, %rsi ## imm = 0xFF0000 orq %rcx, %rsi movq %rdx, %rcx andq $65280, %rcx ## imm = 0xFF00 orq %rsi, %rcx movzbl %dl, %esi orq %rcx, %rsi andq %r8, %rdx orq %rsi, %rdx ret We now compile this into: _foo: ## @foo ## BB#0: ## %entry movzwl 12(%rdi), %eax movzbl 14(%rdi), %ecx shlq $16, %rcx orl %eax, %ecx shlq $32, %rcx movl 8(%rdi), %edx orq %rcx, %rdx movq (%rdi), %rax ret A small improvement :-) llvm-svn: 123520
-
Chris Lattner authored
llvm-svn: 123519
-
Chris Lattner authored
these would try hard to match constants by inverting the bits and recursively matching. There are two problems with this: 1) some patterns would match when we didn't want them to (theoretical) 2) this is insanely expensive to do, and most often pointless. This was apparently useful in just 2 instcombine cases, which I added code to handle explicitly. This change speeds up 'opt' time on 176.gcc by 1% and produces bitwise identical code. llvm-svn: 123518
-
Chris Lattner authored
no functionality change currently. llvm-svn: 123517
-
Chris Lattner authored
llvm-svn: 123516
-
Chris Lattner authored
means that are about to disappear. llvm-svn: 123515
-
Chris Lattner authored
llvm-svn: 123514
-
Greg Clayton authored
llvm-svn: 123513
-
Ted Kremenek authored
-Wuninitialized based on CFG dataflow analysis. WIP. llvm-svn: 123512
-
Ted Kremenek authored
llvm-svn: 123511
-
-
Greg Clayton authored
llvm-svn: 123509
-
Douglas Gregor authored
the TemplateName class. Nothing actually changes, but I find this less objectionable (and it will factor into an upcoming change). llvm-svn: 123508
-
Greg Clayton authored
stuff soon when we get a fix for looking up the "OBJC_IVAR_$_Class.ivar" style symbols into IRForTarget::ResolveExternals() next week. llvm-svn: 123507
-
Douglas Gregor authored
that captures the substitution of a non-type template argument pack for a non-type template parameter pack within a pack expansion that cannot be fully expanded. This follows the approach taken by SubstTemplateTypeParmPackType. llvm-svn: 123506
-
Eric Christopher authored
llvm-svn: 123505
-
Stephen Wilson authored
This patch simply allows the tree to build. A proper implementation still needs to be provided. llvm-svn: 123504
-
Stephen Wilson authored
llvm-svn: 123503
-
Stephen Wilson authored
Propagate the environment if one is not provided. Also, do not allocate the monitor threads launch arguments on the stack. llvm-svn: 123502
-
Chris Lattner authored
to use it. llvm-svn: 123501
-
Stephen Wilson authored
llvm-svn: 123500
-
Stephen Wilson authored
llvm-svn: 123499
-
Stephen Wilson authored
The previous check on header type ET_EXEC is not general enough. Position independent executables have type ET_DYN. llvm-svn: 123498
-
Bob Wilson authored
llvm-svn: 123497
-
Stephen Wilson authored
llvm-svn: 123496
-
Stephen Wilson authored
llvm-svn: 123495
-
Eric Christopher authored
llvm-svn: 123494
-
Douglas Gregor authored
number of expansions, when we know it, and propagate that information through Sema. llvm-svn: 123493
-
Greg Clayton authored
Added the ability to wait for a predicate value, and set it to a new value all in a thread safe fashion. llvm-svn: 123492
-
- Jan 14, 2011
-
-
Ted Kremenek authored
llvm-svn: 123491
-
Bob Wilson authored
This is needed to allow an InstAlias for an instruction with an "OptionalDef" result register (like ARM's cc_out) where you want to set the optional register to reg0. llvm-svn: 123490
-
Douglas Gregor authored
contain multiple parameter packs at different levels. llvm-svn: 123488
-
Ted Kremenek authored
llvm-svn: 123487
-