Chris Lattner
352ab9b4a2
clarify that byval is valid for any pointer argument.
...
llvm-svn: 45998
2008-01-15 04:34:22 +00:00
Evan Cheng
4d70ba3134
Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove unused parameters of CCStructAssign and add size and alignment requirement info.
...
llvm-svn: 45997
2008-01-15 03:34:58 +00:00
Evan Cheng
48bdfe63e2
Both x86-32 and x86-64 handle byval parameter attributes.
...
llvm-svn: 45996
2008-01-15 03:15:41 +00:00
Evan Cheng
5b212ea818
ByVal stack slot alignment should be at least as large as pointer ABI alignment.
...
llvm-svn: 45995
2008-01-15 03:14:05 +00:00
Evan Cheng
a9ecdf6927
Revert my last commit. Not needed.
...
llvm-svn: 45994
2008-01-15 03:10:35 +00:00
Steve Naroff
8115902d6c
Add a comment...
...
llvm-svn: 45993
2008-01-15 02:05:07 +00:00
Steve Naroff
7f988889ef
Rework commit r45976, which was incorrect.
...
- Add Type::isComplexIntegerType(), Type::getAsComplexIntegerType().
- Don't inlude complex types with Type::isIntegerType(), which is too general.
- Use the new predicates in Sema::UsualArithmeticConversions() to recognize/convert the types.
llvm-svn: 45992
2008-01-15 01:41:59 +00:00
Ted Kremenek
e584359716
Removed implicit transitions to a "BlockExit" location; we now handle
...
the end of the block by processing empty blocks (at BlockEntrance) or
when we have just processed the last statement in a block (at PostStmt).
llvm-svn: 45991
2008-01-15 00:24:08 +00:00
Ted Kremenek
619bd1a8a0
Removed mutation of CFGBlock through operator[]. For now the underlying ASTs,
...
however, can still be manipulated through the returned Stmt*.
llvm-svn: 45990
2008-01-15 00:18:01 +00:00
Steve Naroff
d8c7d484af
Make sure Sema::GetTypeForDeclarator() deals with abstract declarators when diagnosing incorrect code.
...
Bug submitted by Eli.
llvm-svn: 45989
2008-01-14 23:33:18 +00:00
Ted Kremenek
3e743661c5
Added prototype implementation of path-sens. analysis core engine.
...
llvm-svn: 45986
2008-01-14 23:24:37 +00:00
Ted Kremenek
50fd838140
Added operator[] for CFGBlock. This provides random access to the statements
...
of a block.
llvm-svn: 45984
2008-01-14 23:18:55 +00:00
Chris Lattner
49f980c334
Fix build issue on cygwin, patch by Sam Bishop
...
llvm-svn: 45977
2008-01-14 21:47:29 +00:00
Steve Naroff
c28f46c6b4
Teach Type::isIntegerType() about GCC's __complex__ integer extensions...
...
Bug submitted by Eli.
llvm-svn: 45976
2008-01-14 21:38:57 +00:00
Steve Naroff
012484d6c8
Fix crasher when redefining functions. Not 100% pleased with this solution, but it is clearly an improvement. Will discuss with Chris later.
...
llvm-svn: 45975
2008-01-14 20:51:29 +00:00
Duncan Sands
38987c1dcc
Simplify CallInst::hasByValArgument using a new method.
...
llvm-svn: 45974
2008-01-14 19:57:00 +00:00
Duncan Sands
b5ca2e9fcb
I noticed that the trampoline straightening transformation could
...
drop attributes on varargs call arguments. Also, it could generate
invalid IR if the transformed call already had the 'nest' attribute
somewhere (this can never happen for code coming from llvm-gcc,
but it's a theoretical possibility). Fix both problems.
llvm-svn: 45973
2008-01-14 19:52:09 +00:00
Chris Lattner
994718417a
don't create the post-ra scheduler unless it is enabled.
...
llvm-svn: 45972
2008-01-14 19:00:06 +00:00
Chris Lattner
4272c12571
remove dead #include
...
llvm-svn: 45971
2008-01-14 18:45:28 +00:00
Ted Kremenek
cb994b6a72
Cleaned up comment.
...
llvm-svn: 45970
2008-01-14 18:42:38 +00:00
Ted Kremenek
94acc6ac9a
Cleaned up comment.
...
llvm-svn: 45969
2008-01-14 18:41:42 +00:00
Ted Kremenek
a018a2c0f4
When serializing CompoundLiteralExpr, serialize out the file scope flag before
...
serializing the subexpression (Init), as this results in a more efficient
encoding in the bitstream.
llvm-svn: 45967
2008-01-14 18:29:39 +00:00
Steve Naroff
d32419de0d
Record if a compound literal expression is @ file scope. This allows us to implement C99 6.5.2.5p6. This could have been done without modifying the AST (by checking the decl type and passing the info down to isContextExpr), however we concluded this is more desirable.
...
Bug/patch by Eli Friedman!
llvm-svn: 45966
2008-01-14 18:19:28 +00:00
Ted Kremenek
d065a790d9
Removed 'inline' keywords from methods now defined in ExplodedGraph.cpp.
...
llvm-svn: 45965
2008-01-14 18:11:35 +00:00
Evan Cheng
c8dc2f781f
Need a space to separate Make options.
...
llvm-svn: 45964
2008-01-14 17:58:03 +00:00
Ted Kremenek
a0a3e9bb07
Change uses of std::cerr/std::cout to llvm::Lcerr/llvm::cout, and remove
...
#include<iostream>.
Patch provided by Sam Bishop.
llvm-svn: 45962
2008-01-14 16:44:48 +00:00
Steve Naroff
4871fe0b8f
Revert r45951, Chris says it violates the C99 spec.
...
llvm-svn: 45961
2008-01-14 16:10:57 +00:00
Duncan Sands
ae8c041b85
This test is now the same as byval-1.ll, so remove it.
...
llvm-svn: 45960
2008-01-14 14:57:30 +00:00
Duncan Sands
4e079479bb
Test that byval cannot be used with pointers to
...
types with no size.
llvm-svn: 45959
2008-01-14 14:55:05 +00:00
Anders Carlsson
a1afcab6f9
_asm is another valid alias for asm.
...
llvm-svn: 45957
2008-01-14 07:46:40 +00:00
Duncan Sands
1f5340c023
We now allow byval on fairly general pointer types.
...
llvm-svn: 45956
2008-01-14 06:53:45 +00:00
Chris Lattner
3c43efc9d1
Improve the FP stackifier to decide all on its own whether
...
an instruction kills a register or not. This is cheap and
easy to do now that instructions record this on their flags,
and this eliminates the second pass of LiveVariables from the
x86 backend. This speeds up a release llc by ~2.5%.
llvm-svn: 45955
2008-01-14 06:41:29 +00:00
Anders Carlsson
1ba25ca171
Add codegen upport for implicit casts to aggregate exprs.
...
llvm-svn: 45954
2008-01-14 06:28:57 +00:00
Chris Lattner
f14ba63620
add a note
...
llvm-svn: 45953
2008-01-14 06:27:57 +00:00
Chris Lattner
fd65291aa3
Fix ASTContext::typesAreCompatible when analyzing a function type with
...
proto and function type without proto. It would never call
'functionTypesAreCompatible' because they have different type classes.
llvm-svn: 45952
2008-01-14 05:45:46 +00:00
Steve Naroff
090353191c
Rewrite Expr::isNullPointerConstant() to deal with multiple levels of explicit casts.
...
Now, isNullPointerConstant() will return true for the following: "(void*)(double*)0"
llvm-svn: 45951
2008-01-14 02:53:34 +00:00
Evan Cheng
b9293c51bd
Simplify code.
...
llvm-svn: 45950
2008-01-14 02:38:45 +00:00
Chris Lattner
26fe7ebc03
Fix the miscompilation of MiBench/consumer-lame that was exposed by Evan's
...
byval work. This miscompilation is due to the program indexing an array out
of range and us doing a transformation that broke this.
llvm-svn: 45949
2008-01-14 02:09:12 +00:00
Chris Lattner
9a6db18b04
The isNotSuitableForSRA property is now dead, don't compute it.
...
llvm-svn: 45948
2008-01-14 01:32:52 +00:00
Chris Lattner
ab0537258f
Change SRAGlobal to not depend on isNotSuitableForSRA, which makes it very
...
difficult to understand the invariants.
llvm-svn: 45947
2008-01-14 01:31:05 +00:00
Chris Lattner
20bbac3435
Make the 'shrink global to bool' optimization more self contained, and thus
...
easier to show that its safe. No functionality change.
llvm-svn: 45946
2008-01-14 01:17:44 +00:00
Chris Lattner
92bd785323
Turn a memcpy from a double* into a load/store of double instead of
...
a load/store of i64. The later prevents promotion/scalarrepl of the
source and dest in many cases.
This fixes the 300% performance regression of the byval stuff on
stepanov_v1p2.
llvm-svn: 45945
2008-01-14 00:28:35 +00:00
Chris Lattner
57974c8d51
factor memcpy/memmove simplification out to its own SimplifyMemTransfer
...
method, no functionality change.
llvm-svn: 45944
2008-01-13 23:50:23 +00:00
Chris Lattner
8c5cdddfb9
simplify some code. If we can infer alignment for source and dest that are
...
greater than memcpy alignment, and if we lower to load/store, use the best
alignment info we have.
llvm-svn: 45943
2008-01-13 22:30:28 +00:00
Chris Lattner
5a86612d3f
simplify some code by adding a InsertBitCastBefore method,
...
make memmove->memcpy conversion a bit simpler.
llvm-svn: 45942
2008-01-13 22:23:22 +00:00
Duncan Sands
51fe7bbcf5
Whitespace tweak.
...
llvm-svn: 45940
2008-01-13 21:20:29 +00:00
Duncan Sands
08c728b519
Remove the assumption that byval has been applied to
...
a pointer to a struct.
llvm-svn: 45939
2008-01-13 21:19:59 +00:00
Duncan Sands
2796740ad6
Allow the byval attribute for pointers to any type with
...
a size, not just structs.
llvm-svn: 45938
2008-01-13 21:19:12 +00:00
Chris Lattner
5bc253c8f2
Fix PR1907, a nasty miscompilation because instcombine didn't
...
realize that ne & sgt was a signed comparison (it was only
looking at whether the left compare was signed).
llvm-svn: 45937
2008-01-13 20:59:02 +00:00
Duncan Sands
93ebe1df27
Check that nested functions don't get pointless
...
static chains.
llvm-svn: 45936
2008-01-13 18:44:12 +00:00