- Jan 09, 2009
-
-
Misha Brukman authored
llvm-svn: 61991
-
rdar://6480391Chris Lattner authored
I noticed this in the code compiled for a routine using std::map, which produced this code: %25 = tail call i32 @memcmp(i8* %24, i8* %23, i32 6) nounwind readonly %.lobit.i = lshr i32 %25, 31 ; <i32> [#uses=1] %tmp.i = trunc i32 %.lobit.i to i8 ; <i8> [#uses=1] %toBool = icmp eq i8 %tmp.i, 0 ; <i1> [#uses=1] br i1 %toBool, label %bb3, label %bb4 which compiled to: call L_memcmp$stub shrl $31, %eax testb %al, %al jne LBB1_11 ## with this change, we compile it to: call L_memcmp$stub testl %eax, %eax js LBB1_11 This triggers all the time in common code, with patters like this: %169 = and i32 %ply, 1 ; <i32> [#uses=1] %170 = trunc i32 %169 to i8 ; <i8> [#uses=1] %toBool = icmp ne i8 %170, 0 ; <i1> [#uses=1] %7 = lshr i32 %6, 24 ; <i32> [#uses=1] %9 = trunc i32 %7 to i8 ; <i8> [#uses=1] %10 = icmp ne i8 %9, 0 ; <i1> [#uses=1] etc llvm-svn: 61985
-
Chris Lattner authored
llvm-svn: 61984
-
Chris Lattner authored
jump threading can have bugs, who knew? ;-) llvm-svn: 61983
-
Chris Lattner authored
llvm-svn: 61980
-
Chris Lattner authored
(which is constant time and cheap) before checking hasAllZeroIndices. llvm-svn: 61976
-
Dan Gohman authored
llvm-svn: 61972
-
Dan Gohman authored
the same formatting as their corresponding SSE2 instructions, for consistency. llvm-svn: 61971
-
Dale Johannesen authored
llvm-svn: 61969
-
Dan Gohman authored
the comment a little more verbose. llvm-svn: 61959
-
Devang Patel authored
Convert DwarfWriter into a pass. Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly. llvm-svn: 61955
-
- Jan 08, 2009
-
-
Dan Gohman authored
llvm-svn: 61950
-
Dan Gohman authored
llvm-svn: 61949
-
Dan Gohman authored
llvm-svn: 61948
-
Dale Johannesen authored
functions that don't already have a (dynamic) alloca. Dynamic allocas cause inefficient codegen and we shouldn't propagate this (behavior follows gcc). Two existing tests assumed such inlining would be done; they are hacked by adding an alloca in the caller, preserving the point of the tests. llvm-svn: 61946
-
Duncan Sands authored
day when more linkage types will be handled. llvm-svn: 61944
-
Chris Lattner authored
will get its preferred alignment. It has to be careful and cautiously assume it will just get the ABI alignment. This prevents instcombine from rounding up the alignment of a load/store without adjusting the alignment of the alloca. llvm-svn: 61934
-
Chris Lattner authored
llvm-as: t.ll:2:39: function may not return opaque type %"bwmoyl" = tail call coldcc opaque @g() ^ llvm-svn: 61933
-
Devang Patel authored
llvm-svn: 61928
-
Misha Brukman authored
* Removed trailing whitespace llvm-svn: 61927
-
Misha Brukman authored
* Removed trailing whitespace llvm-svn: 61926
-
Chris Lattner authored
llvm-svn: 61918
-
Chris Lattner authored
llvm-svn: 61917
-
Chris Lattner authored
loads from allocas that cover the entire aggregate. This handles some memcpy/byval cases that are produced by llvm-gcc. This triggers a few times in kc++ (with std::pair<std::_Rb_tree_const_iterator <kc::impl_abstract_phylum*>,bool>) and once in 176.gcc (with %struct..0anon). llvm-svn: 61915
-
Devang Patel authored
Again, shamelessly copied from MMI. llvm-svn: 61912
-
Devang Patel authored
This is a shameless copy of similar APIs from MachineModuleInfo. The copy from MMI will be deleted in near future. llvm-svn: 61908
-
Bob Wilson authored
passed in to this function changed to support multiple return values, leading to some incorrect argument numbers in the failure messages. With this change, the ArgNo values used for return values and parameters are disjoint, and the new IntrinsicParam function translates those ArgNo values to strings that can be used in the messages. This also fixes a few places where PerformTypeCheck did not return false following calls to CheckFailed. llvm-svn: 61903
-
Oscar Fuentes authored
llvm-svn: 61900
-
Bob Wilson authored
odd bit-width vector elements. Add a check in the verifier for this also. llvm-svn: 61899
-
Chris Lattner authored
llvm-svn: 61898
-
Misha Brukman authored
The error was reported by gcc-4.3.0 during compilation. llvm-svn: 61896
-
Gabor Greif authored
llvm-svn: 61895
-
- Jan 07, 2009
-
-
Gabor Greif authored
llvm-svn: 61893
-
Dan Gohman authored
llvm-svn: 61891
-
Duncan Sands authored
llvm-svn: 61879
-
Duncan Sands authored
was it not very helpful, it was also wrong! The problem is shown in the testcase: the alloca might be passed to a nocapture callee which dereferences it and returns the original pointer. But because it was a nocapture call we think we don't need to track its uses, but we do. llvm-svn: 61876
-
Duncan Sands authored
llvm-svn: 61873
-
Duncan Sands authored
llvm-svn: 61872
-
Duncan Sands authored
llvm-svn: 61870
-
Chris Lattner authored
integer to a (transitive) bitcast the alloca and if that integer has the full size of the alloca, then it clobbers the whole thing. Handle this by extracting pieces out of the stored integer and filing them away in the SROA'd elements. This triggers fairly frequently because the CFE uses integers to pass small structs by value and the inliner exposes these. For example, in kimwitu++, I see a bunch of these with i64 stores to "%struct.std::pair<std::_Rb_tree_const_iterator<kc::impl_abstract_phylum*>,bool>" In 176.gcc I see a few i32 stores to "%struct..0anon". In the testcase, this is a difference between compiling test1 to: _test1: subl $12, %esp movl 20(%esp), %eax movl %eax, 4(%esp) movl 16(%esp), %eax movl %eax, (%esp) movl (%esp), %eax addl 4(%esp), %eax addl $12, %esp ret vs: _test1: movl 8(%esp), %eax addl 4(%esp), %eax ret The second half of this will be to handle loads of the same form. llvm-svn: 61853
-