aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CodeGenCXX/member-function-pointers.cpp
AgeCommit message (Collapse)AuthorFilesLines
2015-09-03[WebAssembly] Initial WebAssembly support in clangDan Gohman1-0/+2
This implements basic support for compiling (though not yet assembling or linking) for a WebAssembly target. Note that ABI details are not yet finalized, and may change. Differential Revision: http://reviews.llvm.org/D12002 llvm-svn: 246814
2015-02-27Update Clang tests to handle explicitly typed load changes in LLVM.David Blaikie1-2/+2
llvm-svn: 230795
2015-02-18Change representation of member function pointers for MIPS targetsZoran Jovanovic1-0/+2
Differential Revision: http://reviews.llvm.org/D7148 llvm-svn: 229680
2013-08-15CHECK-LABEL-ify some code gen tests to improve diagnostic experience when ↵Stephen Lin1-1/+1
tests fail. llvm-svn: 188447
2013-07-24Use ARM-style representation for C++ method pointers under PNaCl/EmscriptenMark Seaborn1-0/+3
Before this change, Clang uses the x86 representation for C++ method pointers when generating code for PNaCl. However, the resulting code will assume that function pointers are 0 mod 2. This assumption is not safe for PNaCl, where function pointers could have any value (especially in future sandboxing models). So, switch to using the ARM representation for PNaCl code, which makes no assumptions about the alignment of function pointers. Since we're changing the "le32" target, this change also applies to Emscripten. The change is beneficial for Emscripten too. Emscripten has a workaround to make function pointers 0 mod 2. This change would allow the workaround to be removed. See: https://code.google.com/p/nativeclient/issues/detail?id=3450 llvm-svn: 187051
2012-05-01Restructure some of the member-pointer tests, implicitlyJohn McCall1-52/+67
removing some that were added without a triple (and moving their tests into files that appropriately test multiple architectures). llvm-svn: 155920
2012-02-15Split reinterpret_casts of member pointers out from CK_BitCast; thisJohn McCall1-0/+40
is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed). Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions. llvm-svn: 150551
2011-08-12Update clang tests for r137527.Eli Friedman1-1/+1
llvm-svn: 137535
2011-07-09clang side to match the LLVM IR type system rewrite patch.Chris Lattner1-22/+22
llvm-svn: 134831
2011-03-15Reorganize the emission of (unfoldable) constant casts a bit, andJohn McCall1-0/+23
make sure that upcasts of member pointer types are covered as constants. Fixed rdar://problem/9130221 llvm-svn: 127702
2010-08-23Abstract out everything having to do with member pointers into the ABIJohn McCall1-2/+2
class; they should just be completely opaque throughout IR gen now, although I haven't really audited that. Fix a bug apparently inherited from gcc-4.2 where we failed to null-check member data pointers when performing derived-to-base or base-to-derived conversions on them. llvm-svn: 111789
2010-08-22Eliminate a stale assertion. Fixes Clang self-host.Douglas Gregor1-0/+11
llvm-svn: 111782
2010-08-22Clean up a very silly use of first-class aggregates.John McCall1-8/+4
llvm-svn: 111777
2010-08-22Experiment with using first-class aggregates to represent member functionJohn McCall1-30/+22
pointers. I find the resulting code to be substantially cleaner, and it makes it very easy to use the same APIs for data member pointers (which I have conscientiously avoided here), and it avoids a plethora of potential inefficiencies due to excessive memory copying, but we'll have to see if it actually works. llvm-svn: 111776
2010-08-22Abstract out member-pointer creation. I'm really unhappy about the currentJohn McCall1-0/+20
duplication between the constant and non-constant paths in all of this. Implement ARM ABI semantics for member pointer constants and conversion. llvm-svn: 111772
2010-05-03If we're generating code to create a pointer-to-member functionDouglas Gregor1-0/+6
aggregate and the result of the aggregate is unused, bail out early. Fixes PR7027. llvm-svn: 102942
2010-05-03When computing the address of a virtual member function pointer, use the ↵Anders Carlsson1-10/+21
pointer width instead of hardcoding for 64-bit. llvm-svn: 102921
2010-02-07Use the right type when taking the address of a non-virtual member function ↵Anders Carlsson1-3/+17
pointer. Fixes PR6258. llvm-svn: 95524
2010-02-04Calculate offset correctly when taking the address of a virtual member function.Anders Carlsson1-4/+13
llvm-svn: 95305
2010-01-16Make the AST explicitly represent the cast of the first operand of a Eli Friedman1-0/+11
pointer-to-member operator. llvm-svn: 93592
2010-01-05When emitting member function pointers, use the canonical decl if the member ↵Anders Carlsson1-0/+11
function is virtual. Fixes PR5940. llvm-svn: 92680
2009-12-15Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.Daniel Dunbar1-1/+1
- This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). llvm-svn: 91446
2009-12-11Move the code for converting a member pointer to a bool so that it is usableEli Friedman1-0/+15
for logical not. llvm-svn: 91112
2009-12-11Fix for PR5718: implement equality comparisons for member function pointers.Eli Friedman1-0/+8
llvm-svn: 91108
2009-11-27Some member pointer casting tests.Eli Friedman1-0/+5
llvm-svn: 89989
2009-11-23Convert the && and || operands to bool using standard conversions. Fixes PR5593.Anders Carlsson1-0/+9
llvm-svn: 89704
2009-11-23Handle converting member pointers to bool.Anders Carlsson1-0/+4
llvm-svn: 89692
2009-11-11Fix some tests in -Asserts mode.Daniel Dunbar1-3/+3
- FileCheck is a *huuuuge* improvement here. - Still feels like we could use a better tool for this though, either teach llvm-dis to spit out the FileCheck syntax, or provide another tool to turn a .ll into a "matchable" input. - Also on my Christmas list is better FileCheck diagnostics with missing variables or mismatches. llvm-svn: 86800
2009-10-18Use CK_BitCast for member function pointer casts. Fixes PR5138.Anders Carlsson1-0/+16
llvm-svn: 84438
2009-10-13Don't assume that the LHS and RHS of a member pointer expression is a ↵Anders Carlsson1-0/+17
DeclRefExpr. Fixes PR5177. llvm-svn: 83986
2009-10-03Implement code generation of member function pointer calls. Fixes PR5121.Anders Carlsson1-0/+5
llvm-svn: 83271
2009-10-03Teach AggExprEmitter about pointers to member functions.Anders Carlsson1-1/+15
llvm-svn: 83266
2009-10-03Handle base-to-derived casts of member function pointers in CGExprConstant.cppAnders Carlsson1-0/+6
llvm-svn: 83265
2009-10-03Handle members to function pointers in CGExprConstant.Anders Carlsson1-4/+10
llvm-svn: 83264
2009-10-03Rewrite member function pointer test not to rely on -O2.Anders Carlsson1-11/+11
llvm-svn: 83262
2009-09-29Forgot test.Anders Carlsson1-0/+25
llvm-svn: 83044