blob: 141d3af44af59b1433b3aa3f40d186947f601b23 [file] [log] [blame]
Anders Carlssonbfc008d2010-01-27 03:22:55 +00001// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
2
3// Non-trivial dtors, should both be passed indirectly.
4struct S {
5 ~S();
Chris Lattner7e21ffb2010-05-05 22:55:13 +00006 short s;
Anders Carlssonbfc008d2010-01-27 03:22:55 +00007};
8
Chris Lattnerfb97cf22010-04-20 05:44:43 +00009// CHECK: define void @_Z1fv(%struct.S* sret %
Anders Carlssonbfc008d2010-01-27 03:22:55 +000010S f() { return S(); }
11// CHECK: define void @_Z1f1S(%struct.S*)
12void f(S) { }
13
14// Non-trivial dtors, should both be passed indirectly.
15class C {
16 ~C();
17 double c;
18};
19
Chris Lattnerfb97cf22010-04-20 05:44:43 +000020// CHECK: define void @_Z1gv(%class.C* sret %
Anders Carlssonbfc008d2010-01-27 03:22:55 +000021C g() { return C(); }
22
23// CHECK: define void @_Z1f1C(%class.C*)
24void f(C) { }
Chris Lattner7e21ffb2010-05-05 22:55:13 +000025
26
27
28
29// PR7058 - Missing byval on MI thunk definition.
30
31// CHECK: define void @_ZThn4_N18BasicAliasAnalysis13getModRefInfoE8CallSite
32// ...
33// CHECK: %struct.CallSite* byval %CS)
34struct CallSite {
35 unsigned Ptr;
36 CallSite(unsigned XX) : Ptr(XX) {}
37};
38
39struct AliasAnalysis {
40 virtual void xyz();
41 virtual void getModRefInfo(CallSite CS) = 0;
42};
43
44struct ModulePass {
45 virtual void xx();
46};
47
48struct BasicAliasAnalysis : public ModulePass, public AliasAnalysis {
49 void getModRefInfo(CallSite CS);
50};
51
52void BasicAliasAnalysis::getModRefInfo(CallSite CS) {
53}