Commit Graph

53061 Commits

Author SHA1 Message Date
Scott Michel 9e3e4a9219 CellSPU:
- Rename fcmp.ll test to fcmp32.ll, start adding new double tests to fcmp64.ll
- Fix select_bits.ll test
- Capitulate to the DAGCombiner and move i64 constant loads to instruction
  selection (SPUISelDAGtoDAG.cpp).

  <rant>DAGCombiner will insert all kinds of 64-bit optimizations after
  operation legalization occurs and now we have to do most of the work that
  instruction selection should be doing twice (once to determine if v2i64
  build_vector can be handled by SelectCode(), which then runs all of the
  predicates a second time to select the necessary instructions.) But,
  CellSPU is a good citizen.</rant>

llvm-svn: 62990
2009-01-26 03:31:40 +00:00
Nate Begeman 624801e87e Fix a typo
llvm-svn: 62989
2009-01-26 03:15:54 +00:00
Nate Begeman a2550a8e96 De-identifying per sabre review
llvm-svn: 62988
2009-01-26 03:15:31 +00:00
Nick Lewycky 5c8fc9d549 Build libLTO on any platform so long as PIC is enabled.
llvm-svn: 62987
2009-01-26 03:04:57 +00:00
Nate Begeman 7ea4e861ca Add some documentation for address-space-based access to the segment registers.
llvm-svn: 62986
2009-01-26 02:54:45 +00:00
Chris Lattner 9449991c4f Handle single-entry phi nodes gracefully in condprop.
llvm-svn: 62985
2009-01-26 02:18:20 +00:00
Chris Lattner 7b6647c178 Fix PR3408 by making a non-obvious assumption very obvious, and
handling the flaw inherent in that assumption.  :)

llvm-svn: 62984
2009-01-26 02:11:30 +00:00
Chris Lattner 57cb472b56 More cleanups and simplifications, no functionality change.
llvm-svn: 62983
2009-01-26 01:57:01 +00:00
Chris Lattner d67aaa6560 tidy asserts
llvm-svn: 62982
2009-01-26 01:38:24 +00:00
Eli Friedman 16c88df1a0 PR3269: create an empty InitListExpr as a child for the
CompoundLiteralExpr so that there aren't any null pointers in the AST.

llvm-svn: 62981
2009-01-26 01:33:06 +00:00
Nate Begeman 5eca265519 Map address space 256 to gs; similar mappings could be supported for the
other x86 segments.  address space 0 is stack/default, 1-255 are reserved for
client use.

llvm-svn: 62980
2009-01-26 01:24:32 +00:00
Nate Begeman 8a51d8c8f7 Support pattern matching various x86 sse shifts.
llvm-svn: 62979
2009-01-26 00:52:55 +00:00
Chris Lattner 4fa23625ab Check in the long promised SourceLocation rewrite. This lays the
ground work for implementing #line, and fixes the "out of macro ID's" 
problem.

There is nothing particularly tricky about the code, other than the
very performance sensitive SourceManager::getFileID() method.

llvm-svn: 62978
2009-01-26 00:43:02 +00:00
Sebastian Redl cf8e1fa58e Update C++ status table with new member pointer conversion capabilities.
llvm-svn: 62977
2009-01-26 00:11:25 +00:00
Chris Lattner 80b283c1cd silence a warning when assertions are disabled.
llvm-svn: 62976
2009-01-25 23:08:00 +00:00
Chris Lattner 3138e81621 improve ASTContext::getDeclAlign comment, as suggested by Eli.
llvm-svn: 62975
2009-01-25 23:06:38 +00:00
Chris Lattner 4f765fb198 use simpler method
llvm-svn: 62974
2009-01-25 22:02:19 +00:00
Torok Edwin 692ed0f67d should have removed the + when manually applying a patch!
llvm-svn: 62973
2009-01-25 20:29:34 +00:00
Torok Edwin 97be2f5840 revert this patch for now, because Codegen does still want to generate SSE code,
for example in the case of va-args. XFAIL associated tests.

llvm-svn: 62972
2009-01-25 20:21:24 +00:00
Sebastian Redl 72b597d6b6 Implement implicit conversions for pointers-to-member.
llvm-svn: 62971
2009-01-25 19:43:20 +00:00
Torok Edwin 3cc1940003 testcase for llvm-gcc part of PR3402.
llvm-svn: 62969
2009-01-25 18:00:06 +00:00
Torok Edwin a23c73bbdc If user explicitly asks not to use SSE, don't force it. This fixes LLVM part of PR3402.
llvm-svn: 62967
2009-01-25 17:58:56 +00:00
Dan Gohman f1d38be265 Eliminate the loop that searches through each of the operands
of each use in the SelectionDAG ReplaceAllUses* functions. Thanks
to Chris for spotting this opportunity.

Also, factor out code from all 5 of the ReplaceAllUses* functions
into AddNonLeafNodeToCSEMaps, which is now renamed
AddModifiedNodeToCSEMaps to more accurately reflect its purpose.

llvm-svn: 62964
2009-01-25 16:29:12 +00:00
Dan Gohman 3a113ec468 Whitespace tidiments.
llvm-svn: 62963
2009-01-25 16:21:38 +00:00
Dan Gohman e7b0dde2ee Move the N->use_empty() assert from DeleteNode to
DeleteNodeNotInCSEMaps, since DeleteNode just calls
DeleteNodeNotInCSEMaps.

llvm-svn: 62962
2009-01-25 16:20:37 +00:00
Dan Gohman e3f2278de1 Reality-check the FAQ entry for "Can I use LLVM to convert C++ to C?"
llvm-svn: 62961
2009-01-25 16:04:50 +00:00
Sebastian Redl 8b2540439f Introduce an explicit case for member pointers in CodeGenTypes. However, it simply asserts.
llvm-svn: 62960
2009-01-25 13:35:30 +00:00
Sebastian Redl a865ade730 Fix compile error from r62953.
llvm-svn: 62959
2009-01-25 13:34:47 +00:00
Nick Lewycky 21add8f983 Start generating arbitrary precision integer SCEVs. This removes the temporary
code that rounded up and capped the size.

llvm-svn: 62958
2009-01-25 08:16:27 +00:00
Nick Lewycky cb7a10ab63 Actually run the test in this directory.
llvm-svn: 62957
2009-01-25 08:05:07 +00:00
Nick Lewycky 5647c5d1a4 The function that does nothing but call malloc is noalias return.
llvm-svn: 62956
2009-01-25 07:59:57 +00:00
Evan Cheng 1c7c019229 Private linkage support for PPC / Darwin.
llvm-svn: 62955
2009-01-25 06:32:01 +00:00
Evan Cheng abda665f5f Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
%reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
insert => %reg1030<def> = MOV8rr %reg1028                                                                                                                                            
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>                                                                                                         

In this case, it might not be possible to coalesce the second MOV8rr                                                                                                                 
instruction if the first one is coalesced. So it would be profitable to                                                                                                              
commute it:                                                                                                                                                                          
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
%reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
insert => %reg1030<def> = MOV8rr %reg1029                                                                                                                                            
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>

llvm-svn: 62954
2009-01-25 03:53:59 +00:00
Eli Friedman 8bad1c5903 One more case for Expr::isConstantInitializer; I think this covers
everything that we aren't intending to implement in Expr::Evaluate.

llvm-svn: 62953
2009-01-25 03:27:40 +00:00
Eli Friedman 384da27131 Enhancements to Expr::isConstantInitializer to deal with a few
cases it couldn't deal with before.

llvm-svn: 62952
2009-01-25 03:12:18 +00:00
Eli Friedman 7139af42ce Rename Expr::isConstantExpr to Expr::isConstantInitializer; this more
accurately states what the function is trying to do and how it is 
different from Expr::isEvaluatable.  Also get rid of a parameter that is both 
unused and inaccurate.

llvm-svn: 62951
2009-01-25 02:32:41 +00:00
Eli Friedman cf2b7ba4a7 Get rid of some code that should be unnecessary.
llvm-svn: 62950
2009-01-25 02:10:46 +00:00
Eli Friedman c69d454d5a Make the constant folder aware of
__builtin___CFStringMakeConstantString.  (We get into trouble in 
GenerateStaticBlockVarDecl if the constant folder isn't accurate.)

llvm-svn: 62949
2009-01-25 01:54:01 +00:00
Eli Friedman 529a99bcf4 Fix the address of a label to be properly considered and emitted as a
constant.

llvm-svn: 62948
2009-01-25 01:21:06 +00:00
Eli Friedman 8b7c52658b Fix for PR2100: merge types for variables.
llvm-svn: 62947
2009-01-24 23:49:55 +00:00
Eli Friedman 588395702f Correct test; sorry for any inconvenience.
llvm-svn: 62946
2009-01-24 23:44:26 +00:00
Fariborz Jahanian a887e63434 Compute instaceStart/instanceSize fields of the class_ro_t meta-data
for objc2's non-fragile abi.

llvm-svn: 62945
2009-01-24 23:43:01 +00:00
Sebastian Redl c6d52f5dfb Make tentative parsing of pointer-to-member decls work, and fix other stuff pointed out by Doug.
llvm-svn: 62944
2009-01-24 23:29:36 +00:00
Eli Friedman 52cc016f21 PR3062: statement expressions should be illegal at file scope. I don't
think this has any significant effects at the moment, but it could 
matter if we start constant-folding statement expressions like gcc does.

llvm-svn: 62943
2009-01-24 23:09:00 +00:00
Eli Friedman 8549e5dcc8 Fix for PR2910: implement CodeGen for non-constant offsetof.
Note that there are still other issues in this area; see PR3396.

llvm-svn: 62942
2009-01-24 22:38:55 +00:00
Eli Friedman 2aa38fea35 Refactor sizeof handling to use constant folding logic for constant
sizeof expressions.

llvm-svn: 62941
2009-01-24 22:19:05 +00:00
Nate Begeman b09b0242ca Fix an indent and a typo.
llvm-svn: 62940
2009-01-24 22:12:48 +00:00
Chris Lattner 6806131c6b add initial support for the gcc "alignof(decl) is the alignment of the decl
not the type" semantics.  This can definitely be improved, but is better than
what we had.

llvm-svn: 62939
2009-01-24 21:53:27 +00:00
Dale Johannesen 2b3389a626 Revert previous change; even this mild and clearly
more accurate change loses more than it gains on
benchmarks.

llvm-svn: 62938
2009-01-24 21:49:34 +00:00
Sebastian Redl 887ce84b2b Undo accidental disabling of smart pointers.
llvm-svn: 62937
2009-01-24 21:36:33 +00:00