aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2012-02-01Revert r149363 which was part a series of commits that were reverted in llvmArgyrios Kyrtzidis
commit 149470. This fixes test/CodeGen/PR3589-freestanding-libcalls.c. Original log: ConstantArray::get() (for strings) is going away, use ConstantDataArray::getString instead. Many instances of ConstantArray::get() could be moved to use more efficient ConstantDataArray methods that avoid a ton of intermediate Constant*'s for each element (e.g. GetConstantArrayFromStringLiteral). I don't plan on doing this in the short-term though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149477 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-01For pass-by-value record arguments to functions emit a forward declEric Christopher
instead of the entire class definition. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149474 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-31Support @compatibility_alias at run time (GNUstep Runtime)David Chisnall
Patch by Niels Grewe! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149401 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-31Don't zero terminate the bitmap twice.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149377 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-31ConstantArray::get() (for strings) is going away, useChris Lattner
ConstantDataArray::getString instead. Many instances of ConstantArray::get() could be moved to use more efficient ConstantDataArray methods that avoid a ton of intermediate Constant*'s for each element (e.g. GetConstantArrayFromStringLiteral). I don't plan on doing this in the short-term though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149363 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-31enhance some optimization logic to handle ConstantDataSequentialChris Lattner
as well as ConstantArray. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149347 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30test for a v-table dispatch that consumes anFariborz Jahanian
argument. twik to support the test case. // rdar://10444476 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149298 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30objc-arc: Perform null check on receiver before sending methods whichFariborz Jahanian
consume one or more of their arguments. If not done, this will cause a leak as method will not consume the argument when receiver is null. In this patch, the null path releases consumed argument. // rdar://10444474 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149279 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30Remove long dead code for handling vector shift by immediate builtins.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149237 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30Remove custom handling for cmpsd/cmpss/cmppd/cmpps builtins. The builtins ↵Craig Topper
are now in IntrinsicsX86.td. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149235 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30Cleanup 3dnow builtin handling. Most of them were already handled by LLVM ↵Craig Topper
connecting intrinsics and builtins in IntrinsicsX86.td. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149233 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30Simplify code by using the new getAggregateElement method that got addedChris Lattner
recently. This also conveniently gets clang ready for a change about to land in mainline. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149225 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-29revert r149184Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149205 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-29When emitting an ARC epilogue that looks like a return of 'self',John McCall
kill the retain from the return site. This has the workaround nature. It's badness all around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149193 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-29Get a little bit smarter about killing off the ReturnValue allocaJohn McCall
in the presence of straight-line cleanups. This is a simple but important case, particularly for ARC. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149190 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-28objc-arc: Perform null check on receiver before sending methods whichFariborz Jahanian
consume one or more of their arguments. If not done, this will cause a leak as method will not consume the argument when receiver is null. // rdar://10444474 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149184 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-28Make the __builtin_c[lt]zs builtins target independent.Benjamin Kramer
There is really no reason to have these only available on x86. It's just __builtin_c[tl]z for shorts. Modernize the test while at it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149183 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-27Placate gcc's -Wreturn-typeMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149104 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Make clz/ctz builtins defined for zero on ARM targets. rdar://10732455Bob Wilson
ARM supports clz and ctz directly and both operations have well-defined results for zero. There is no disadvantage in performance to using the defined-at-zero versions of llvm.ctlz/cttz intrinsics. We're running into ARM-specific code written with the assumption that __builtin_clz(0) == 32, even though that value is technically undefined. The code is failing now because of llvm optimizations that are taking advantage of the undef behavior (specifically svn r147255). There's nothing wrong with that optimization on x86 where any incorrect assumptions about __builtin_clz(0) will quickly be exposed. For ARM, though, optimizations based on that undef behavior are likely to cause subtle bugs. Other targets with defined-at-zero clz/ctz support may want to override the default behavior as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149086 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Use createRecordFwdDecl here since that's what we're doing.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149051 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Revert previous patch unifying all of the C++ record prep in one area,Eric Christopher
the gdb testsuite complains too much about the ordering of items printed, even if the offsets in the debug info are correct. This reverts commit 027cb30af828f07750f9185782822297a5c57231. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149049 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Remove another duplicated variable.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149047 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Use function pointers, rather than references, to pass DestroyersPeter Collingbourne
around, in the process cleaning up the various gcc/msvc compiler workarounds. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149036 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Tidy and remove some unused variables.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149015 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Collect this information together. No reason to have it split.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149013 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Refactor into its own function.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149012 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Add some ABI tweaks for i386-pc-win32 triple so that we return structs in an ↵Eli Friedman
MSVC-compatible way. Patch by Joe Groff. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148992 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Clean up comment.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148982 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Fixup r148926, for -Asserts.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148943 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25reapply r148902:Chris Lattner
"use the new ConstantVector::getSplat method where it makes sense." Also simplify a bunch of code to use the Builder->getInt32 instead of doing it the hard and ugly way. Much more progress could be made here, but I don't plan to do it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148926 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Fix a crash for an edge case of the GNU ?: extension.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148923 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Revert 148902 which was part of 148901 which was reverted in r148906.Argyrios Kyrtzidis
Original log: use the new ConstantVector::getSplat method where it makes sense. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148907 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Refactor the record decl forward declaration code a bit.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148904 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Typo.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148903 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25use the new ConstantVector::getSplat method where it makes sense.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148902 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-24The following patch adds __attribute__((no_address_safety_analysis)) which ↵Kostya Serebryany
will allow to disable address safety analysis (such as e.g. AddressSanitizer or SAFECode) for a specific function. When building with AddressSanitizer, add AddressSafety function attribute to every generated function except for those that have __attribute__((no_address_safety_analysis)). With this patch we will be able to 1. disable AddressSanitizer for a particular function 2. disable AddressSanitizer-hostile optimizations (such as some cases of load widening) when AddressSanitizer is on. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148842 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-23Make sure the integer type used to align the vaarg address is the same as theAkira Hatanaka
type of pointers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148753 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-23Ignore return type if its size is zero.Akira Hatanaka
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148744 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-23Add support for -fno-optimize-sibling-calls. Currently only implemented in theNick Lewycky
X86 backend in LLVM. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148689 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-21Add an assertion that our use-marking actually covers all uses of a ↵Eli Friedman
variable. The assertion doesn't cover quite as much as it should, but it's a good start, at least. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148625 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20When adding types to the context chain for record types, just emitEric Christopher
a forward declaration unless we already have a type. We can fill it in later if it's actually used. Fixes PR11345 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148584 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20More dead code removal (using -Wunreachable-code)David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148577 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20use llvm:Attributes instead of unsignedKostya Serebryany
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148554 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18test svn commit accessSeth Cantrell
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148388 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Fix a string over-run detected by ASAN.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148375 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Fix special king of typo.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148368 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17output body of folded case again.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148361 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Folding away unreachable case statement.Fariborz Jahanian
patch (slightly revised) by Aaron Ballman. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148359 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Make sure to initialize ExternalProtocolPtrTyDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148358 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-17Add __builtin_labs and __builtin_llabs, to complete the set of ↵Eli Friedman
__builtin_*abs. Patch by Ruben Van Boxem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148340 91177308-0d34-0410-b5e6-96231b3b80d8