| OLD | NEW |
| 1 //===---- TargetInfo.h - Encapsulate target details -------------*- C++ -*-===// | 1 //===---- TargetInfo.h - Encapsulate target details -------------*- 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 // These classes wrap the information about a call or function | 10 // These classes wrap the information about a call or function |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 /// platform. | 212 /// platform. |
| 213 virtual void getDependentLibraryOption(llvm::StringRef Lib, | 213 virtual void getDependentLibraryOption(llvm::StringRef Lib, |
| 214 llvm::SmallString<24> &Opt) const; | 214 llvm::SmallString<24> &Opt) const; |
| 215 | 215 |
| 216 /// Gets the linker options necessary to detect object file mismatches on | 216 /// Gets the linker options necessary to detect object file mismatches on |
| 217 /// this platform. | 217 /// this platform. |
| 218 virtual void getDetectMismatchOption(llvm::StringRef Name, | 218 virtual void getDetectMismatchOption(llvm::StringRef Name, |
| 219 llvm::StringRef Value, | 219 llvm::StringRef Value, |
| 220 llvm::SmallString<32> &Opt) const {} | 220 llvm::SmallString<32> &Opt) const {} |
| 221 | 221 |
| 222 // @LOCALMOD-START |
| 223 /// Determine whether the sequentially consistent fence generated for |
| 224 /// the legacy GCC-style ``__sync_synchronize()`` builtin should be |
| 225 /// surrounded by empty assembly directives which touch all of |
| 226 /// memory. This allows platforms which aim for portability to |
| 227 /// isolate themselves from changes in sequentially consistent |
| 228 /// fence's semantics, since its intent is to represent the |
| 229 /// C11/C++11 memory model which only orders atomic memory accesses. |
| 230 /// This won't guarantee that all accesses (e.g. those to |
| 231 /// non-escaping objects) will not be reordered. |
| 232 virtual bool addAsmMemoryAroundSyncSynchronize() const { |
| 233 return false; |
| 234 } |
| 235 |
| 236 /// Determine whether a full sequentially consistent fence should be |
| 237 /// emitted when ``asm("":::"memory")`` is encountered, treating it |
| 238 /// like ``__sync_synchronize()``. |
| 239 virtual bool asmMemoryIsFence() const { |
| 240 return false; |
| 241 } |
| 242 // @LOCALMOD-END |
| 243 |
| 222 /// Gets the target-specific default alignment used when an 'aligned' clause | 244 /// Gets the target-specific default alignment used when an 'aligned' clause |
| 223 /// is used with a 'simd' OpenMP directive without specifying a specific | 245 /// is used with a 'simd' OpenMP directive without specifying a specific |
| 224 /// alignment. | 246 /// alignment. |
| 225 virtual unsigned getOpenMPSimdDefaultAlignment(QualType Type) const { | 247 virtual unsigned getOpenMPSimdDefaultAlignment(QualType Type) const { |
| 226 return 0; | 248 return 0; |
| 227 } | 249 } |
| 228 }; | 250 }; |
| 229 } | 251 } |
| 230 | 252 |
| 231 #endif | 253 #endif |
| OLD | NEW |