summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExpr.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* -fcatch-undefined-behavior: Start checking loads and stores for null pointers.Richard Smith2012-11-011-11/+11
| | | | | | | | We want the diagnostic, and if the load is optimized away, we still want to trap it. Stop checking non-default address spaces; that doesn't work in general. llvm-svn: 167219
* Don't crash on bad atomic operations. PR14176.Eli Friedman2012-10-301-7/+13
| | | | llvm-svn: 166992
* Move two helper functions to AST so that sema can use them.Rafael Espindola2012-10-271-113/+2
| | | | llvm-svn: 166853
* Refactor some code into a new findMaterializedTemporary function.Rafael Espindola2012-10-271-25/+32
| | | | llvm-svn: 166849
* Refactor some code into a new skipRValueSubobjectAdjustments function.Rafael Espindola2012-10-271-45/+51
| | | | llvm-svn: 166848
* Delay codegen to after collecting all SubobjectAdjustment so that the collectionRafael Espindola2012-10-271-6/+6
| | | | | | can be refactored and used in Sema. llvm-svn: 166847
* -fcatch-undefined-behavior checking for appropriate vptr value: Clang ↵Richard Smith2012-10-251-7/+83
| | | | | | CodeGen side. llvm-svn: 166661
* DR1472: A reference isn't odr-used if it has preceding initialization,Richard Smith2012-10-201-3/+17
| | | | | | | | | initialized by a reference constant expression. Our odr-use modeling still needs work here: we don't yet implement the 'set of potential results of an expression' DR. llvm-svn: 166361
* Move the Attributes::Builder outside of the Attributes class and into its ↵Bill Wendling2012-10-151-1/+1
| | | | | | own class named AttrBuilder. No functionality change. llvm-svn: 165961
* Attributes RewriteBill Wendling2012-10-151-1/+2
| | | | | | | | Convert the uses of the Attributes class over to the new format. The Attributes::get method call now takes an LLVM context so that the attributes object can be uniquified and stored. llvm-svn: 165918
* Add codegen support for __uuidof().Nico Weber2012-10-111-1/+11
| | | | llvm-svn: 165710
* Remove the final bits of Attributes being declared in the AttributeBill Wendling2012-10-101-3/+5
| | | | | | | namespace. Use the attribute's enum value instead. No functionality change intended. llvm-svn: 165611
* -fcatch-undefined-behavior: store the type name directly at the end of a ↵Richard Smith2012-10-091-5/+5
| | | | | | type descriptor. 5% binary size reduction due to fewer relocations. llvm-svn: 165572
* -fcatch-undefined-behavior: emit calls to the runtime library whenever one ↵Richard Smith2012-10-091-26/+164
| | | | | | of the checks fails. llvm-svn: 165536
* Move TargetData to DataLayout.Micah Villmow2012-10-081-3/+3
| | | | llvm-svn: 165395
* When a bad UTF-8 encoding or bogus escape sequence is encountered in aRichard Smith2012-09-081-2/+3
| | | | | | | string literal, produce a diagnostic pointing at the erroneous character range, not at the start of the literal. llvm-svn: 163459
* -fcatch-undefined-behavior: Factor emission of the creation of, and branch to,Richard Smith2012-09-081-31/+28
| | | | | | | | | 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
* Change the representation of builtin functions in the ASTEli Friedman2012-08-311-1/+4
| | | | | | | | | (__builtin_* etc.) so that it isn't possible to take their address. Specifically, introduce a new type to represent a reference to a builtin function, and a new cast kind to convert it to a function pointer in the operand of a call. Fixes PR13195. llvm-svn: 162962
* New -fcatch-undefined-behavior features:Richard Smith2012-08-241-21/+62
| | | | | | | | * 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
* Convert loads and stores of vec3 to vec4 to achieve better code generation. ↵Tanya Lattner2012-08-161-0/+80
| | | | | | Add test case. llvm-svn: 162002
* Fix an assertion failure with a C++ constructor initializing aEli Friedman2012-08-081-22/+0
| | | | | | member of reference type in an anonymous struct. PR13154. llvm-svn: 161473
* Update Clang to reflect the move of MDBuilder in r160237.Chandler Carruth2012-07-151-1/+1
| | | | llvm-svn: 160238
* Distinguish more carefully between free functions and C++ instance methodsJohn McCall2012-07-071-2/+2
| | | | | | | | 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. llvm-svn: 159894
* Silence warning in -Asserts buildMatt Beaumont-Gay2012-07-031-0/+1
| | | | llvm-svn: 159635
* Share ConvertUTF8toWide() between Lex and CodeGen.Nico Weber2012-07-031-37/+2
| | | | llvm-svn: 159634
* Significantly simplify CGExprAgg's logic about ignored results:John McCall2012-07-021-6/+9
| | | | | | | | | | | | 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
* Propagate lvalue alignment into bitfields. Per report on cfe-dev.Eli Friedman2012-06-271-19/+18
| | | | llvm-svn: 159295
* Support L__FUNCTION__ in microsoft mode, PR11789Nico Weber2012-06-231-6/+95
| | | | | | | | | | 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. llvm-svn: 159060
* Make the ".*" operator work correctly when the base is a prvalue and the ↵Eli Friedman2012-06-151-1/+30
| | | | | | field has a non-trivial copy constructor. PR13097. llvm-svn: 158578
* User better API for vla in compund literals.Fariborz Jahanian2012-06-071-4/+3
| | | | | | // rdar://11485774 llvm-svn: 158157
* When emitting compund literal of vla pointer elements, make Fariborz Jahanian2012-06-071-1/+5
| | | | | | | sure to emit vla size to prevent an irgen crash. // rdar://11485774 llvm-svn: 158153
* wire -fbounds-checking to the new LLVM bounds checking passNuno Lopes2012-05-221-1/+1
| | | | llvm-svn: 157262
* revert the usage of the objectsize intrinsic with 3 parameters (to match ↵Nuno Lopes2012-05-221-2/+1
| | | | | | LLVM r157255) llvm-svn: 157256
* Implement IRGen for C++11's "T{1, 2, 3}", where T is an aggregate and theRichard Smith2012-05-141-7/+14
| | | | | | expression is treated as an lvalue. llvm-svn: 156781
* update calls to objectsize intrinsic to match LLVM r156473Nuno Lopes2012-05-091-2/+3
| | | | | | add a test for -fbounds-checking code generation llvm-svn: 156474
* add -fbounds-checking option.Nuno Lopes2012-05-081-1/+1
| | | | | | | | 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
* remove code to add bound checks for simple array accesses, since those are ↵Nuno Lopes2012-05-071-25/+0
| | | | | | | | already covered by the check with the objectsize builtin remove the comparison of objectsize with -1. since it's an unsigned comparison, it will always succeed if objectsize returns -1, which is enough to have the check removed llvm-svn: 156311
* Push variable declaration into nested scope (the only place where it is ↵Ted Kremenek2012-05-011-3/+1
| | | | | | used). Found by static analyzer. llvm-svn: 155922
* Abstract the emission of global destructors into ABI-specific codeJohn McCall2012-05-011-1/+1
| | | | | | | | | | | | | 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
* Adjust for LLVM name tweaks requested by Chandler.Duncan Sands2012-04-161-3/+3
| | | | llvm-svn: 154824
* Propagate alignment on lvalues through EmitLValueForField. PR12395.Eli Friedman2012-04-161-47/+49
| | | | llvm-svn: 154789
* Use MDBuilder to help with metadata creation.Duncan Sands2012-04-151-10/+3
| | | | llvm-svn: 154767
* Rename "fpaccuracy" metadata to the more generic "fpmath". That's because I'mDuncan Sands2012-04-141-2/+1
| | | | | | | | | thinking of generalizing it to be able to specify other freedoms beyond accuracy (such as that NaN's don't have to be respected). I'd like the 3.1 release (the first one with this metadata) to have the more generic name already rather than having to auto-upgrade it in 3.2. llvm-svn: 154745
* Step forward with supporting of ARM homogenous aggregates:Anton Korobeynikov2012-04-131-0/+13
| | | | | | | - Handle unions - Handle C++ classes llvm-svn: 154664
* Implement __atomic_fetch_nand and __atomic_nand_fetch to complete our set ofRichard Smith2012-04-131-1/+11
| | | | | | GNU __atomic builtins. llvm-svn: 154659
* Implement the missing pieces needed to support libstdc++4.7's <atomic>:Richard Smith2012-04-131-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | __atomic_test_and_set, __atomic_clear, plus a pile of undocumented __GCC_* predefined macros. Implement library fallback for __atomic_is_lock_free and __c11_atomic_is_lock_free, and implement __atomic_always_lock_free. Contrary to their documentation, GCC's __atomic_fetch_add family don't multiply the operand by sizeof(T) when operating on a pointer type. libstdc++ relies on this quirk. Remove this handling for all but the __c11_atomic_fetch_add and __c11_atomic_fetch_sub builtins. Contrary to their documentation, __atomic_test_and_set and __atomic_clear take a first argument of type 'volatile void *', not 'void *' or 'bool *', and __atomic_is_lock_free and __atomic_always_lock_free have an argument of type 'const volatile void *', not 'void *'. With this change, libstdc++4.7's <atomic> passes libc++'s atomic test suite, except for a couple of libstdc++ bugs and some cases where libc++'s test suite tests for properties which implementations have latitude to vary. llvm-svn: 154640
* Fix some i1/i8 confusion within _Atomic(bool) in IR generation, bothDouglas Gregor2012-04-121-5/+9
| | | | | | | | | | | | | | in general (such an atomic has boolean representation) and specifically for IR generation of __c11_atomic_init. The latter also means actually using initialization semantics for this initialization, rather than just creating a store. On a related note, make sure we actually put in non-atomic-to-atomic conversions when performing an implicit conversion sequence. IR generation is far too kind here, but we still want the ASTs to make sense. llvm-svn: 154612
* Implement support for 18 of the GNU-compatible __atomic builtins.Richard Smith2012-04-121-50/+175
| | | | | | | | | | | | This is not quite sufficient for libstdc++'s <atomic>: we still need __atomic_test_and_set and __atomic_clear, and may need a more complete __atomic_is_lock_free implementation. We are also missing an implementation of __atomic_always_lock_free, __atomic_nand_fetch, and __atomic_fetch_nand, but those aren't needed for libstdc++. llvm-svn: 154579
* Make __atomic_init() (soon to be __c11_atomic_init()) work with non-scalar ↵David Chisnall2012-04-111-4/+15
| | | | | | types. llvm-svn: 154507
* Express the number of ULPs in fpaccuracy metadata as a real rather than a Duncan Sands2012-04-101-7/+4
| | | | | | rational number, eg as 2.5 rather than 5, 2. OK'd by Peter Collingbourne. llvm-svn: 154388
OpenPOWER on IntegriCloud