exprs.c revision 919e693e80632d214c1f3110f6ee5d1c0b61f06b
10b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// Test this without pch. 2a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fblocks -include %S/exprs.h -fsyntax-only -verify %s 30b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 40b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// Test with pch. 5a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/exprs.h 6a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s 70b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 88ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor__SIZE_TYPE__ size_type_value; 90b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorint integer; 100b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorlong long_integer; 1117fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregordouble floating; 12cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor_Complex double floating_complex; 130b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 140b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// DeclRefExpr 150b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorint_decl_ref *int_ptr1 = &integer; 160b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorenum_decl_ref *enum_ptr1 = &integer; 1717fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor 1817fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor// IntegerLiteral 190b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorinteger_literal *int_ptr2 = &integer; 200b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorlong_literal *long_ptr1 = &long_integer; 210b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 22db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// FloatingLiteral + ParenExpr 2317fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregorfloating_literal *double_ptr = &floating; 2417fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor 25cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor// ImaginaryLiteral 26cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregorimaginary_literal *cdouble_ptr = &floating_complex; 27cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor 28673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor// StringLiteral 29673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregorconst char* printHello() { 30673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor return hello; 31673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor} 32673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor 3317fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor// CharacterLiteral 340b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorchar_literal *int_ptr3 = &integer; 35db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor 360b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor// UnaryOperator 370b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregornegate_enum *int_ptr4 = &integer; 380b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor 398ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor// OffsetOfExpr 408ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregoroffsetof_type *offsetof_ptr = &size_type_value; 418ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor 420b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor// SizeOfAlignOfExpr 430b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof(sizeof(float)) size_t_value; 440b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof_sizeof *size_t_ptr = &size_t_value; 450b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof_sizeof2 *size_t_ptr2 = &size_t_value; 460b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor 47cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor// ArraySubscriptExpr 48cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregorarray_subscript *double_ptr1_5 = &floating; 49cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor 501f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor// CallExpr 511f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregorcall_returning_double *double_ptr2 = &floating; 521f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor 531f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor// MemberExpr 541f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregormember_ref_double *double_ptr3 = &floating; 551f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor 56db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// BinaryOperator 570b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregoradd_result *int_ptr5 = &integer; 58db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor 59ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor// CompoundAssignOperator 60ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregoraddeq_result *int_ptr6 = &integer; 61ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor 62919e693e80632d214c1f3110f6ee5d1c0b61f06bArgyrios Kyrtzidisadd_result_with_typeinfo *int_typeinfo_ptr6; 63919e693e80632d214c1f3110f6ee5d1c0b61f06bArgyrios Kyrtzidis 64ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor// ConditionalOperator 65ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregorconditional_operator *double_ptr4 = &floating; 66ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor 67db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// CStyleCastExpr 68db600c330a37b1c3ab4533310729910ee188f900Douglas Gregorvoid_ptr vp1 = &integer; 69d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor 70ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor// CompoundLiteral 71ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregorstruct S s; 72ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregorcompound_literal *sptr = &s; 73ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor 74d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor// ExtVectorElementExpr 75d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregorext_vector_element *double_ptr5 = &floating; 7644cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor 77d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor// InitListExpr 78d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregordouble get_from_double_array(unsigned Idx) { return double_array[Idx]; } 79d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 80d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor/// DesignatedInitExpr 81d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregorfloat get_from_designated(unsigned Idx) { 82d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor return designated_inits[2].y; 83d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor} 84d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 8544cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor// TypesCompatibleExpr 8644cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregortypes_compatible *int_ptr7 = &integer; 8744cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor 8844cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor// ChooseExpr 8944cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregorchoose_expr *int_ptr8 = &integer; 9044cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor 9144cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor// GNUNullExpr FIXME: needs C++ 9244cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor//null_type null = __null; 9394cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor 9494cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor// ShuffleVectorExpr 9594cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregorshuffle_expr *vec_ptr = &vec2; 96