exprs.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // Test this without pch.
  2. // RUN: %clang_cc1 -fblocks -include %S/exprs.h -fsyntax-only -verify %s
  3. // Test with pch.
  4. // RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/exprs.h
  5. // RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s -DWITH_PCH
  6. #ifdef WITH_PCH
  7. // expected-no-diagnostics
  8. #endif
  9. __SIZE_TYPE__ size_type_value;
  10. int integer;
  11. long long_integer;
  12. double floating;
  13. _Complex double floating_complex;
  14. // DeclRefExpr
  15. int_decl_ref *int_ptr1 = &integer;
  16. enum_decl_ref *enum_ptr1 = &integer;
  17. // IntegerLiteral
  18. integer_literal *int_ptr2 = &integer;
  19. long_literal *long_ptr1 = &long_integer;
  20. // FloatingLiteral + ParenExpr
  21. floating_literal *double_ptr = &floating;
  22. // ImaginaryLiteral
  23. imaginary_literal *cdouble_ptr = &floating_complex;
  24. // StringLiteral
  25. const char* printHello() {
  26. return hello;
  27. }
  28. // CharacterLiteral
  29. char_literal *int_ptr3 = &integer;
  30. // UnaryOperator
  31. negate_enum *int_ptr4 = &integer;
  32. // OffsetOfExpr
  33. offsetof_type *offsetof_ptr = &size_type_value;
  34. // UnaryExprOrTypeTraitExpr
  35. typeof(sizeof(float)) size_t_value;
  36. typeof_sizeof *size_t_ptr = &size_t_value;
  37. typeof_sizeof2 *size_t_ptr2 = &size_t_value;
  38. // ArraySubscriptExpr
  39. array_subscript *double_ptr1_5 = &floating;
  40. // CallExpr
  41. call_returning_double *double_ptr2 = &floating;
  42. // MemberExpr
  43. member_ref_double *double_ptr3 = &floating;
  44. // BinaryOperator
  45. add_result *int_ptr5 = &integer;
  46. // CompoundAssignOperator
  47. addeq_result *int_ptr6 = &integer;
  48. add_result_with_typeinfo *int_typeinfo_ptr6;
  49. // ConditionalOperator
  50. conditional_operator *double_ptr4 = &floating;
  51. // CStyleCastExpr
  52. void_ptr vp1 = &integer;
  53. // CompoundLiteral
  54. struct S s;
  55. compound_literal *sptr = &s;
  56. // ExtVectorElementExpr
  57. ext_vector_element *double_ptr5 = &floating;
  58. // InitListExpr
  59. double get_from_double_array(unsigned Idx) { return double_array[Idx]; }
  60. /// DesignatedInitExpr
  61. float get_from_designated(unsigned Idx) {
  62. return designated_inits[2].y;
  63. }
  64. // TypesCompatibleExpr
  65. types_compatible *int_ptr7 = &integer;
  66. // ChooseExpr
  67. choose_expr *int_ptr8 = &integer;
  68. // GNUNullExpr FIXME: needs C++
  69. //null_type null = __null;
  70. // ShuffleVectorExpr
  71. shuffle_expr *vec_ptr = &vec2;
  72. // GenericSelectionExpr
  73. generic_selection_expr *double_ptr6 = &floating;