aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2010-12-04Don't crash when initializing a subaggregate in C from a property r-value.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120899 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Make IgnoreParenLValueCasts skip __extension__ nodes like IgnoreParens().John McCall
Abramo noticed this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120898 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Silence "comparison between signed and unsigned integer expressions" warnings.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120897 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Remove some defensive calls to EmitLoadOfPropertyRefLValue that shouldn'tJohn McCall
be required, and then fix up some missing loads on overloaded-operator paths which that exposed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120896 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04When deciding whether to complain about the type of a boolean condition, useJohn McCall
the type of the expression *after* array/function decay. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120895 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Although we currently have explicit lvalue-to-rvalue conversions, they'reJohn McCall
not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler. In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator. This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter. Ted Kremenek kindly contributed the analyzer workarounds in this patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120890 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Test case for the l-value base only being evaluated once.John McCall
Also, move the l-value emission code into CGObjC.cpp and teach it, for completeness, to store away self for a super send. Also, inline the super cases for property gets and sets and make them use the correct result type for implicit getter/setter calls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120887 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Kill the KVC l-value kind and calculate the base expression when emittingJohn McCall
the l-value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120884 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-std=Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120882 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-mad-enablePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120881 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-fast-relaxed-mathPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120880 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-unsafe-math-optimizationsPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120879 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-finite-math-onlyPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120878 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-single-precision-constantPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120877 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Implement -cl-opt-disablePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120876 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Refactor optimisation level codePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120875 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Introduce CompilerInvocation::setLangDefaults functionPeter Collingbourne
This patch refactors the CompilerInvocation code to introduce a CompilerInvocation::setLangDefaults function, which can set up a LangOptions with the defaults for a given language and language standard. This function is useful for non-command line based Clang clients which need to set up a CompilerInvocation manually for a specific language. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120874 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Minor refactoring; have BugReport::getRanges return a pair of iterator, no ↵Argyrios Kyrtzidis
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120873 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-04Mark functions referenced by 'cleanup' attribute as used. Fixes rdar://8728293Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120872 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Diagnose when accessing property in a class method andFariborz Jahanian
no property accessor class method to be found, instead of crashing in IRGen. // rdar://8703553 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120855 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Fixed typo.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120839 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Added struct/class syntactic info for c++0x scoped enum.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120828 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Add support for vmul_p8 Neon intrinsic. Radar 8446141.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120812 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Implement caching for the linkage and visibility calculations ofDouglas Gregor
declarations. The motivation for this patch is that linkage/visibility computations are linear in the number of redeclarations of an entity, and we've run into a case where a single translation unit has > 6500 redeclarations of the same (unused!) external variable. Since each redeclaration involves a linkage check, the resulting quadratic behavior makes Clang slow to a crawl. With this change, a simple test with 512 redeclarations of a variable syntax-checks ~20x faster than before. That said, I hate this change, and will probably end up reverting it in a few hours. Reasons to hate it: - It makes NamedDecl larger, since we don't have enough free bits in Decl to squeeze in the extra information about caching. - There are way too many places where we need to invalidate this cache, because the visibility of a declaration can change due to redeclarations (!). Despite self-hosting and passing the testsuite, I have no confidence that I've found all of places where this cache needs to be invalidated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120808 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Add a separate rightShift flag instead of reusing the existing "poly" variableBob Wilson
to distinguish vsri/vsli. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120806 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Add some warning messages about invalid use of common/nocommon attributes.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120799 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Fix an insidious bug in BugReporter whereTed Kremenek
a node in the trimmed graph might not always correctly map back to the original error node. This could cause a crash in some cases when flagging memory leaks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120795 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Also include the pointer address of the ExplodedNodeTed Kremenek
when generating DOT output for an ExplodedGraph. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120794 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Also show notes about the taken path in TextPathDiagnostics.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120783 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Remove leftover code and use the text path diagnostic client even without a ↵Argyrios Kyrtzidis
specified output file since it just uses diagnostic notes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120773 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Introduce TextPathDiagnostics, a simple PathDiagnosticClient that outputs as ↵Argyrios Kyrtzidis
diagnostic notes the sequence of events; useful for testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120770 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Handle any number of SourceRanges inside BugReporter::FlushReport.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120769 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Rename Create[*]DiagnosticClient -> create[*]DiagnosticClient.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120768 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Fix diagnostic for reporting bad escape sequence.Ted Kremenek
Patch by Paul Curtis! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120759 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Reflow to a style doug prefers, increasing indentation :-)Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120746 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02When we're performing an explicit cast of some sort, don't complainDouglas Gregor
about deprecated Objective-C pointer conversions. Plus, make sure to actually set an appropriate AssignmentAction when performing an implicit conversion from an InitializationSequence. Fixes regressions in the GCC DejaGNU testsuite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120744 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Merge transparent union types using member's unqualified typePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120736 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Fix range in printf warnings for invalid conversion specifiers.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120735 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Merge transparent union types using member's canonical param typePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120729 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Fix inverted return value in the ASTImporter. No matter how much LLVMDouglas Gregor
code I wrote, returning "true" on error is still unnatural. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120727 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Fixed source range for MS asm statement.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120724 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02fix PR8726 by teaching the aggregate init optimization code to handle Chris Lattner
structs with references in them correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120722 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02IR Gen. part of API support for __block cxxFariborz Jahanian
objects imported into blocks. //rdar://8594790. Will have a test case coming (as well as one sent to llvm test suite). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Do not change the size of LookupResult::Filter based on the NDEBUGDouglas Gregor
macri; the extra bool fits into padding anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120708 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Tweaks.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120701 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02ObjC support in the XML dumper.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120700 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Merge ValueManager into SValBuilder.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Improve codegen for initializer lists to use memset more aggressivelyChris Lattner
when an initializer is variable (I handled the constant case in a previous patch). This has three pieces: 1. Enhance AggValueSlot to have a 'isZeroed' bit to tell CGExprAgg that the memory being stored into has previously been memset to zero. 2. Teach CGExprAgg to not emit stores of zero to isZeroed memory. 3. Teach CodeGenFunction::EmitAggExpr to scan initializers to determine whether they are profitable to emit a memset + inividual stores vs stores for everything. The heuristic used is that a global has to be more than 16 bytes and has to be 3/4 zero to be candidate for this xform. The two testcases are illustrative of the scenarios this catches. We now codegen test9 into: call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 400, i32 4, i1 false) %.array = getelementptr inbounds [100 x i32]* %Arr, i32 0, i32 0 %tmp = load i32* %X.addr, align 4 store i32 %tmp, i32* %.array and test10 into: call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 392, i32 8, i1 false) %tmp = getelementptr inbounds %struct.b* %S, i32 0, i32 0 %tmp1 = getelementptr inbounds %struct.a* %tmp, i32 0, i32 0 %tmp2 = load i32* %X.addr, align 4 store i32 %tmp2, i32* %tmp1, align 4 %tmp5 = getelementptr inbounds %struct.b* %S, i32 0, i32 3 %tmp10 = getelementptr inbounds %struct.a* %tmp5, i32 0, i32 4 %tmp11 = load i32* %X.addr, align 4 store i32 %tmp11, i32* %tmp10, align 4 Previously we produced 99 stores of zero for test9 and also tons for test10. This xforms should substantially speed up -O0 builds when it kicks in as well as reducing code size and optimizer heartburn on insane cases. This resolves PR279. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120692 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02attempt to fix a buildbot failure, apparently apache fails to build.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120688 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Add support for the common and nocommon attributes.Eric Christopher
rdar://8560647 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120650 91177308-0d34-0410-b5e6-96231b3b80d8