| OLD | NEW |
| 1 //===--- TargetCXXABI.h - C++ ABI Target Configuration ----------*- C++ -*-===// | 1 //===--- TargetCXXABI.h - C++ ABI Target Configuration ----------*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 /// | 9 /// |
| 10 /// \file | 10 /// \file |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 case iOS64: | 139 case iOS64: |
| 140 case GenericMIPS: | 140 case GenericMIPS: |
| 141 return false; | 141 return false; |
| 142 | 142 |
| 143 case Microsoft: | 143 case Microsoft: |
| 144 return true; | 144 return true; |
| 145 } | 145 } |
| 146 llvm_unreachable("bad ABI kind"); | 146 llvm_unreachable("bad ABI kind"); |
| 147 } | 147 } |
| 148 | 148 |
| 149 /// \brief Are pointers to member functions differently aligned? |
| 150 bool arePointersToMemberFunctionsAligned() const { |
| 151 switch (getKind()) { |
| 152 case GenericARM: |
| 153 case GenericAArch64: |
| 154 // TODO: ARM-style pointers to member functions put the discriminator in |
| 155 // the this adjustment, so they don't require functions to have any |
| 156 // special alignment and could therefore also return false. |
| 157 case GenericItanium: |
| 158 case GenericMIPS: |
| 159 case iOS: |
| 160 case iOS64: |
| 161 case Microsoft: |
| 162 return true; |
| 163 } |
| 164 llvm_unreachable("bad ABI kind"); |
| 165 } |
| 166 |
| 149 /// \brief Is the default C++ member function calling convention | 167 /// \brief Is the default C++ member function calling convention |
| 150 /// the same as the default calling convention? | 168 /// the same as the default calling convention? |
| 151 bool isMemberFunctionCCDefault() const { | 169 bool isMemberFunctionCCDefault() const { |
| 152 // Right now, this is always false for Microsoft. | 170 // Right now, this is always false for Microsoft. |
| 153 return !isMicrosoft(); | 171 return !isMicrosoft(); |
| 154 } | 172 } |
| 155 | 173 |
| 156 /// Are arguments to a call destroyed left to right in the callee? | 174 /// Are arguments to a call destroyed left to right in the callee? |
| 157 /// This is a fundamental language change, since it implies that objects | 175 /// This is a fundamental language change, since it implies that objects |
| 158 /// passed by value do *not* live to the end of the full expression. | 176 /// passed by value do *not* live to the end of the full expression. |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 } | 308 } |
| 291 | 309 |
| 292 friend bool operator!=(const TargetCXXABI &left, const TargetCXXABI &right) { | 310 friend bool operator!=(const TargetCXXABI &left, const TargetCXXABI &right) { |
| 293 return !(left == right); | 311 return !(left == right); |
| 294 } | 312 } |
| 295 }; | 313 }; |
| 296 | 314 |
| 297 } // end namespace clang | 315 } // end namespace clang |
| 298 | 316 |
| 299 #endif | 317 #endif |
| OLD | NEW |