summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.h
Commit message (Collapse)AuthorAgeFilesLines
...
* patch for PR9027 and // rdar://11861085Fariborz Jahanian2013-01-251-3/+13
| | | | | | | | | | | Title: [PR9027] volatile struct bug: member is not loaded at -O; This is caused by last flag passed to @llvm.memcpy being false, not honoring that aggregate has at least one 'volatile' data member (even though aggregate itself has not been qualified as 'volatile'. As a result, optimization optimizes away the memcpy altogether. Patch review by John MaCall (I still need to fix up a test though). llvm-svn: 173535
* [ubsan] Add support for -fsanitize-blacklistWill Dietz2013-01-181-1/+4
| | | | llvm-svn: 172808
* Remove useless 'llvm::' qualifier from names like StringRef and others that areDmitri Gribenko2013-01-121-3/+3
| | | | | | brought into 'clang' namespace by clang/Basic/LLVM.h llvm-svn: 172323
* Don't assert/crash on reference variables in lambdas bound to aEli Friedman2013-01-031-5/+0
| | | | | | static local variable from the parent scope. PR14773. llvm-svn: 171433
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-8/+8
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* [ubsan] Add flag to enable recovery from checks when possible.Will Dietz2012-12-021-1/+11
| | | | llvm-svn: 169114
* Fix the Objective-C exception rethrow from cleanups (GNU runtimes). Note thatDavid Chisnall2012-11-071-1/+1
| | | | | | | a bug in the inliner still causes the wrong thing to happen at -O2 and above (PR14116). llvm-svn: 167534
* Use the individual -fsanitize=<...> arguments to control which of the UBSanRichard Smith2012-11-051-2/+3
| | | | | | | checks to enable. Remove frontend support for -fcatch-undefined-behavior, -faddress-sanitizer and -fthread-sanitizer now that they don't do anything. llvm-svn: 167413
* Split emission of -ftrapv checks and -fcatch-undefined-behavior checks intoRichard Smith2012-11-011-2/+7
| | | | | | separate functions, since they share essentially no code. llvm-svn: 167259
* -fcatch-undefined-behavior checking for appropriate vptr value: Clang ↵Richard Smith2012-10-251-2/+5
| | | | | | CodeGen side. llvm-svn: 166661
* At -O0, prefer objc_storeStrong with a null new value to theJohn McCall2012-10-171-0/+1
| | | | | | | | | | | combination of a load+objc_release; this is generally better for tools that try to track why values are retained and released. Also use objc_storeStrong when copying a block (again, only at -O0), which requires us to do a preliminary store of null in order to compensate for objc_storeStrong's assign semantics. llvm-svn: 166085
* Transform pattern:Alexey Samsonov2012-10-161-0/+8
| | | | | | | | | | | if (CGM.getModuleDebugInfo()) DebugInfo = CGM.getModuleDebugInfo() into a call: maybeInitializeDebugInfo(); This is a simplification for a possible future fix of PR13942. llvm-svn: 166019
* Add codegen support for __uuidof().Nico Weber2012-10-111-0/+2
| | | | llvm-svn: 165710
* -fcatch-undefined-behavior: emit calls to the runtime library whenever one ↵Richard Smith2012-10-091-3/+18
| | | | | | of the checks fails. llvm-svn: 165536
* CodeGen: Copy tail padding when we're not dealing with a trivial copy assign ↵Benjamin Kramer2012-09-301-1/+14
| | | | | | | | | | or move assign operator. This fixes a regression from r162254, the optimizer has problems reasoning about the smaller memcpy as it's often not safe to widen a store but making it smaller is. llvm-svn: 164917
* Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. ↵Sylvestre Ledru2012-09-271-2/+2
| | | | | | See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164766 llvm-svn: 164769
* Fix a typo 'iff' => 'if'Sylvestre Ledru2012-09-271-2/+2
| | | | llvm-svn: 164766
* Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.Dmitri Gribenko2012-09-151-6/+6
| | | | llvm-svn: 163983
* -fcatch-undefined-behavior: Factor emission of the creation of, and branch to,Richard Smith2012-09-081-17/+16
| | | | | | | | | the trap BB out of the individual checks and into a common function, to prepare for making this code call into a runtime library. Rename the existing EmitCheck to EmitTypeCheck to clarify it and to move it out of the way of the new EmitCheck. llvm-svn: 163451
* [ms-inline asm] Have MSAsmStmts use the generic EmitAsmStmt codegen function.Chad Rosier2012-08-281-1/+0
| | | | llvm-svn: 162796
* [ms-inline asm] Rename EmitGCCAsmStmt to EmitAsmStmt and have it accept Chad Rosier2012-08-281-1/+1
| | | | | | | | AsmStmts. This function is only used by GCCAsmStmts, however. Constraints need to be properly computed before MSAsmStmts can use EmitAsmStmt. No functional change intended. llvm-svn: 162776
* [ms-inline asm] As part of a larger refactoring, rename AsmStmt to GCCAsmStmt.Chad Rosier2012-08-251-1/+1
| | | | | | No functional change intended. llvm-svn: 162632
* New -fcatch-undefined-behavior features:Richard Smith2012-08-241-2/+24
| | | | | | | | * when checking that a pointer or reference refers to appropriate storage for a type, also check the alignment and perform a null check * check that references are bound to appropriate storage * check that 'this' has appropriate storage in member accesses and member function calls llvm-svn: 162523
* [ms-inline asm] Remove an unused argument. This logic can now be reused by theChad Rosier2012-08-231-4/+2
| | | | | | ms-style inline asms. llvm-svn: 162463
* Fix a bunch of -Wdocumentation warnings.Dmitri Gribenko2012-08-231-3/+2
| | | | llvm-svn: 162452
* Use the alignment from lvalue emission to more accurately compute the alignmentEli Friedman2012-08-231-9/+3
| | | | | | | of a pointer for builtin emission, instead of just depending on the type of the pointee. <rdar://problem/11314941>. llvm-svn: 162425
* Fix an assertion failure with a C++ constructor initializing aEli Friedman2012-08-081-3/+0
| | | | | | member of reference type in an anonymous struct. PR13154. llvm-svn: 161473
* Change APInt to APSInt in one instance. Also change a call to operator==() toRichard Trieu2012-07-231-1/+1
| | | | | | APSInt::isSameValue() when comparing different sized APSInt's. llvm-svn: 160641
* Revert commit r160308. We decide to move builtins selection to the backend.Simon Atanasyan2012-07-171-1/+0
| | | | llvm-svn: 160353
* MIPS: Implement __builtin_mips_shll_qb builtin function overloading.Simon Atanasyan2012-07-161-0/+1
| | | | | | | This function has two versions. The first one is used for a register operand. The second one is used for an immediate number. llvm-svn: 160308
* Temporarily revert this to see if it brings the gdb bot back.Eric Christopher2012-07-111-7/+2
| | | | llvm-svn: 160049
* The end of a block doesn't necessarily need a line table entry unlessEric Christopher2012-07-111-2/+7
| | | | | | | | | | 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 llvm-svn: 160033
* Patch by Anton Lokhmotov to add OpenCL work group size attributes.Tanya Lattner2012-07-091-0/+10
| | | | llvm-svn: 159965
* Significantly simplify CGExprAgg's logic about ignored results:John McCall2012-07-021-4/+5
| | | | | | | | | | | | 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. llvm-svn: 159630
* Dead code eliminate the massive hexagon builtin intrinsic supporting code.Benjamin Kramer2012-06-281-2/+0
| | | | | | | | 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. llvm-svn: 159371
* Support MIPS DSP Rev1 intrinsics. Simon Atanasyan2012-06-281-0/+1
| | | | | | This patch was reviewed in the llvm-commits list by Jim Grosbach. llvm-svn: 159366
* Propagate lvalue alignment into bitfields. Per report on cfe-dev.Eli Friedman2012-06-271-3/+0
| | | | llvm-svn: 159295
* block literal irgen: several improvements on naming blockFariborz Jahanian2012-06-261-1/+1
| | | | | | | | | | | | 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). llvm-svn: 159206
* Etch out the code path for MS-style inline assembly.Chad Rosier2012-06-111-0/+1
| | | | llvm-svn: 158325
* objective-c: fix a sema and IRGen crash when propertyFariborz Jahanian2012-05-291-0/+1
| | | | | | | | getter result type is safe but does not match with property type resulting in spurious warning followed by crash in IRGen. // rdar://11515196 llvm-svn: 157641
* Implement IRGen for C++11's "T{1, 2, 3}", where T is an aggregate and theRichard Smith2012-05-141-0/+1
| | | | | | expression is treated as an lvalue. llvm-svn: 156781
* add -fbounds-checking option.Nuno Lopes2012-05-081-0/+5
| | | | | | | | When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend. OK'ed by Chad; thanks for the review. llvm-svn: 156431
* Abstract the emission of global destructors into ABI-specific codeJohn McCall2012-05-011-4/+3
| | | | | | | | | | | | | and only consider using __cxa_atexit in the Itanium logic. The default logic is to use atexit(). Emit "guarded" initializers in Microsoft mode unconditionally. This is definitely not correct, but it's closer to correct than just not emitting the initializer. Based on a patch by Timur Iskhodzhanov! llvm-svn: 155894
* Implements boxed expressions for Objective-C. <rdar://problem/10194391>Patrick Beard2012-04-191-1/+1
| | | | llvm-svn: 155082
* Propagate alignment on lvalues through EmitLValueForField. PR12395.Eli Friedman2012-04-161-6/+4
| | | | llvm-svn: 154789
* Add an AttributedStmt type to represent a statement with C++11 attributesRichard Smith2012-04-141-0/+1
| | | | | | | | | attached. Since we do not support any attributes which appertain to a statement (yet), testing of this is necessarily quite minimal. Patch by Alexander Kornienko! llvm-svn: 154723
* Step forward with supporting of ARM homogenous aggregates:Anton Korobeynikov2012-04-131-0/+2
| | | | | | | - Handle unions - Handle C++ classes llvm-svn: 154664
* Express the number of ULPs in fpaccuracy metadata as a real rather than a Duncan Sands2012-04-101-2/+1
| | | | | | rational number, eg as 2.5 rather than 5, 2. OK'd by Peter Collingbourne. llvm-svn: 154388
* Rename GenerateCXXGlobalDtorFunc to GenerateCXXGlobalDtorsFunc.John McCall2012-04-061-4/+4
| | | | llvm-svn: 154190
* Revert r153723, and its follow-ups r153728 and r153733.Chandler Carruth2012-03-301-11/+11
| | | | | | | | | | | | | | | | These patches cause us to miscompile and/or reject code with static function-local variables in an extern-C context. Previously, we were papering over this as long as the variables are within the same translation unit, and had not seen any failures in the wild. We still need a proper fix, which involves mangling static locals inside of an extern-C block (as GCC already does), but this patch causes pretty widespread regressions. Firefox, and many other applications no longer build. Lots of test cases have been posted to the list in response to this commit, so there should be no problem reproducing the issues. llvm-svn: 153768
OpenPOWER on IntegriCloud