aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2012-07-13This is one of the first steps at moving to replace target-dependent Joel Jones
intrinsics with target-indepdent intrinsics. The first instruction(s) to be handled are the vector versions of count leading zeros (ctlz). The changes here are to clang so that it generates a target independent vector ctlz when it sees an ARM dependent vector ctlz. The changes in llvm are to match the target independent vector ctlz and in VMCore/AutoUpgrade.cpp to update any existing bc files containing ARM dependent vector ctlzs with target-independent ctlzs. There are also changes to an existing test case in llvm for ARM vector count instructions and a new test for the bitcode upgrade. <rdar://problem/11831778> There is deliberately no test for the change to clang, as so far as I know, no consensus has been reached regarding how to test neon instructions in clang; q.v. <rdar://problem/8762292> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160201 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-12[Windows] Use thiscall as the default calling convention for class methods. ↵Timur Iskhodzhanov
PR12785 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160121 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-12Add _rdrand{16,32,64}_step intrinsics to immintrin.hBenjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160118 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-12Add the ObjFW runtime. Patch by Jonathan Schleifer!John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160102 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-11Add OpenCL metadata for kernel arg names. This output is controlled via a ↵Tanya Lattner
flag as noted in the OpenCL Spec. Includes a test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160092 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-11Temporarily revert this to see if it brings the gdb bot back.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160049 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-11The end of a block doesn't necessarily need a line table entry unlessEric Christopher
there's something going on there. Remove the unconditional line entry and only add one if we're emitting cleanups (any other statements would be handled normally). Fixes rdar://9199234 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160033 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-09Patch by Anton Lokhmotov to add OpenCL work group size attributes.Tanya Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159965 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-09The delete argument should not be converted to void*.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159961 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-07Distinguish more carefully between free functions and C++ instance methodsJohn McCall
in the ABI arrangement, and leave a hook behind so that we can easily tweak CCs on platforms that use different CCs by default for C++ instance methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159894 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-06Add -ffp-contract = { fast | on | off } command line option support.Lang Hames
This flag sets the 'fp-contract' mode, which controls the formation of fused floating point operations. Available modes are: - Fast: Form fused operations anywhere. - On: Form fused operations where allowed by FP_CONTRACT. This is the default mode. - Off: Don't form fused operations (in future this may be relaxed to forming fused operations where it can be proved that the result won't be affected). Currently clang doesn't support the FP_CONTRACT pragma, so the 'On' and 'Off' modes are equivalent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159794 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-06Implement AST classes for comments, a real parser for Doxygen comments and aDmitri Gribenko
very simple semantic analysis that just builds the AST; minor changes for lexer to pick up source locations I didn't think about before. Comments AST is modelled along the ideas of HTML AST: block and inline content. * Block content is a paragraph or a command that has a paragraph as an argument or verbatim command. * Inline content is placed within some block. Inline content includes plain text, inline commands and HTML as tag soup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159790 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-04Remove get(V)BaseClassOffsetInBits, the CharUnit functions should be used ↵Benjamin Kramer
instead. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159719 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-04Drop the ASTContext.h include from Stmt.h and fix up transitive users.Benjamin Kramer
This required moving the ctors for IntegerLiteral and FloatingLiteral out of line which shouldn't change anything as they are usually called through Create methods that are already out of line. ASTContext::Deallocate has been a nop for a long time, drop it from ASTVector and make it independent from ASTContext.h Pass the StorageAllocator directly to AccessedEntity so it doesn't need to have a definition of ASTContext around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159718 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Rename the GCC Objective-C runtime to gcc from gnu-fragile and the GNUstepDavid Chisnall
runtime to gnustep from gnu. Fix EH for the GCC runtime. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159684 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Make the following changes in the way Mips handles vector arguments and returnAkira Hatanaka
values: - Return integer vectors in integer registers. - Pass vector arguments in integer registers. - Set an upper bound for argument alignment. The largest alignment is 8-byte for O32 and 16-byte for N32/64. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159676 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Silence warning in -Asserts buildMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159635 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Share ConvertUTF8toWide() between Lex and CodeGen.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159634 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-02Significantly simplify CGExprAgg's logic about ignored results:John McCall
if we want to ignore a result, the Dest will be null. Otherwise, we must copy into it. This means we need to ensure a slot when loading from a volatile l-value. With all that in place, fix a bug with chained assignments into __block variables of aggregate type where we were losing insight into the actual source of the value during the second assignment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159630 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-02When we're looking for redeclarations which might provide a definition in ↵Eli Friedman
CodeGen, make sure we examine all the redeclarations. PR13252. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159586 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29Update Clang to reflect the new home of IRBuilder.h as of r159421.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159422 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29Update based on move of DIBuilder.h to include/llvm.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159415 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29Fix PR13234 - crash when trying to report an unsupported ABI featureTimur Iskhodzhanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159405 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Dead code eliminate the massive hexagon builtin intrinsic supporting code.Benjamin Kramer
The tablegen'd code does the same thing without this egregious duplication. In my limited testing everything seems to work, however there can be differences if the clang and llvm builtin definitions don't match. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159371 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Now that we use the GCC builtin <-> llvm intrinsic, dead code eliminate the ↵Benjamin Kramer
handwritten emitter. The generated code uncovered an invalid prototype for __builtin_mips_shilo, fix it along the way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159368 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Support MIPS DSP Rev1 intrinsics. Simon Atanasyan
This patch was reviewed in the llvm-commits list by Jim Grosbach. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159366 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Compare the canonical types and document why we give up on the covariant case.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159360 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Disable devirtualization when we have covariant returns. I will open a bugRafael Espindola
for tracking this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159351 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Don't devirtualize calls when we don't have the correct type of the this pointerRafael Espindola
handy. It can be done, but we would have to build a derived-to-base cast during codegen to compute the correct this pointer. I will handle covariant returns next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159350 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Add -ftls-model command-line flag.Hans Wennborg
This allows for setting the default TLS model. (PR9788) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159336 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Fix another issue with devirtualizing calls to final methods by passing themRafael Espindola
the correct this pointer. There is some potential for sharing a bit more code with canDevirtualizeMemberFunctionCalls, but that can be done in an independent patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159326 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Fix grammar.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159321 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Update the #include to find the DebugInfo.h in the correct placeBill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159315 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-27Propagate lvalue alignment into bitfields. Per report on cfe-dev.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159295 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-27Implement John McCall's review of r159212 other than the this pointer notRafael Espindola
being updated. Will fix that in a second. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159280 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26Fix a bug in my previous patch: If we are not doing a virtual call becauseRafael Espindola
the member expression is qualified, call the method specified in the code, not the most derived one we can find. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159219 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26During codegen of a virtual call we would extract any casts in the expressionRafael Espindola
to see if we had an underlying final class or method, but we would then use the cast type to do the call, resulting in a direct call to the wrong method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159212 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26block literal irgen: several improvements on naming blockFariborz Jahanian
literal helper functions. All helper functions (global and locals) use block_invoke as their prefix. Local literal helper names are prefixed by their enclosing mangled function names. Blocks in non-local initializers (e.g. a global variable or a C++11 field) are prefixed by their mangled variable name. The descriminator number added to end of the name starts off with blank (for first block) and _<N> (for the N+2-th block). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159206 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26[asan] add missing asan instrumentation in generated global init functionsKostya Serebryany
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159191 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-25ARM: enable struct byval for APCS.Manman Ren
Revert r136662 which disables ARM byval. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159168 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-23IRGen: Factor v-table generation into the CGCXXABI object.Charles Davis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159091 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-23Support the tls_model attribute (PR9788)Hans Wennborg
This adds support for the tls_model attribute. This allows the user to choose a TLS model that is better than what LLVM would select by default. For example, a variable might be declared as: __thread int x __attribute__((tls_model("initial-exec"))); if it will not be used in a shared library that is dlopen'ed. This depends on LLVM r159077. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159078 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-23Support L__FUNCTION__ in microsoft mode, PR11789Nico Weber
Heavily based on a patch from Aaron Wishnick <aaron.s.wishnick@gmail.com>. I'll clean up the duplicated function in CodeGen as a follow-up, later today or tomorrow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159060 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22revert CodeGen support for the alloc_size attribute until we finish the ↵Nuno Lopes
design of a more generic metadata node git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159016 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Documentation cleanup: making \param docs match the code.James Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158982 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Documentation cleanup: Escape @objc* in Doxygen comments.James Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158974 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Remove a goofy CMake hack and use the standard CMake facilities toChandler Carruth
express library-level dependencies within Clang. This is no more verbose really, and plays nicer with the rest of the CMake facilities. It should also have no change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158888 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[ms-style asm] Change the fatal error to an extension warning. Apparently, thisChad Rosier
error was asserting on anything that included Windows.h. MS-style inline asm is still dropped, but at least now we're not completely silent about it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158833 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Don't circumvent the debug info type cache when emitting info for ↵Benjamin Kramer
EnumConstantDecl. CreateEnumType doesn't participate in caching so the descriptor for the enum gets recomputed for every reference of an element of an enum, only to get discarded when it gets turned into an MDNode. No functionality change except performance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158832 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158830 91177308-0d34-0410-b5e6-96231b3b80d8