aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-06-05 21:57:13 +0000
committerDevang Patel <dpatel@apple.com>2009-06-05 21:57:13 +0000
commitc386c848cead46ecd3e94764aa5ea39749db2671 (patch)
tree6837a5d548b2b8e81d676e7659d64f17dc0972bd /include
parent65e800308932871350c3512e5a4861bfdc839126 (diff)
downloadexternal_llvm-c386c848cead46ecd3e94764aa5ea39749db2671.zip
external_llvm-c386c848cead46ecd3e94764aa5ea39749db2671.tar.gz
external_llvm-c386c848cead46ecd3e94764aa5ea39749db2671.tar.bz2
Add new function attribute - noimplicitfloat
Update code generator to use this attribute and remove NoImplicitFloat target option. Update llc to set this attribute when -no-implicit-float command line option is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72959 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Attributes.h4
-rw-r--r--include/llvm/Target/TargetLowering.h3
-rw-r--r--include/llvm/Target/TargetOptions.h6
3 files changed, 5 insertions, 8 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h
index 492b023..a594e32 100644
--- a/include/llvm/Attributes.h
+++ b/include/llvm/Attributes.h
@@ -55,6 +55,8 @@ const Attributes Alignment = 31<<16; ///< Alignment of parameter (5 bits)
// 0 means unaligned different from align 1
const Attributes NoCapture = 1<<21; ///< Function creates no aliases of pointer
const Attributes NoRedZone = 1<<22; /// disable redzone
+const Attributes NoImplicitFloat = 1<<23; /// disable implicit floating point
+ /// instructions.
/// @brief Attributes that only apply to function parameters.
const Attributes ParameterOnly = ByVal | Nest | StructRet | NoCapture;
@@ -62,7 +64,7 @@ const Attributes ParameterOnly = ByVal | Nest | StructRet | NoCapture;
/// @brief Attributes that only apply to function.
const Attributes FunctionOnly = NoReturn | NoUnwind | ReadNone | ReadOnly |
NoInline | AlwaysInline | OptimizeForSize | StackProtect | StackProtectReq |
- NoRedZone;
+ NoRedZone | NoImplicitFloat;
/// @brief Parameter attributes that do not apply to vararg call arguments.
const Attributes VarArgsIncompatible = StructRet;
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h
index ef166a2..327af27 100644
--- a/include/llvm/Target/TargetLowering.h
+++ b/include/llvm/Target/TargetLowering.h
@@ -632,7 +632,8 @@ public:
/// It returns MVT::iAny if SelectionDAG should be responsible for
/// determining it.
virtual MVT getOptimalMemOpType(uint64_t Size, unsigned Align,
- bool isSrcConst, bool isSrcStr) const {
+ bool isSrcConst, bool isSrcStr,
+ SelectionDAG &DAG) const {
return MVT::iAny;
}
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h
index 4869157..0c74fa1 100644
--- a/include/llvm/Target/TargetOptions.h
+++ b/include/llvm/Target/TargetOptions.h
@@ -73,12 +73,6 @@ namespace llvm {
/// target FP instructions.
extern bool UseSoftFloat;
- /// NoImplicitFloat - This flag is enabled when the -no-implicit-float flag is
- /// specified on the command line. When this flag is on, the code generator
- /// won't generate any implicit floating point instructions. I.e., no XMM or
- /// x87 or vectorized memcpy/memmove instructions. This is for X86 only.
- extern bool NoImplicitFloat;
-
/// NoZerosInBSS - By default some codegens place zero-initialized data to
/// .bss section. This flag disables such behaviour (necessary, e.g. for
/// crt*.o compiling).