summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-10-08 07:44:52 +0000
committerDuncan Sands <baldrick@free.fr>2008-10-08 07:44:52 +0000
commit32052e8272cb9f2f35eb87560ebecbc8ebe5cab3 (patch)
tree5e4fe441f347d8993f1d24dfffdf3bc99d44bd25
parent26ff6f9c5414cd5e1d6693bb481e0c45d648bde4 (diff)
downloadbcm5719-llvm-32052e8272cb9f2f35eb87560ebecbc8ebe5cab3.tar.gz
bcm5719-llvm-32052e8272cb9f2f35eb87560ebecbc8ebe5cab3.zip
Use template to distinguish between function variants.
GCC 4.4.0 gives an error on the "int" declaration for example saying that it has already been declared (using the "short" one). Using templates here allow the compiler to distinguish between the function to choose. Also, "llvm/Support/DataTypes.h" was not included, leading to error messages about not knowing "uint32_t" for example. Patch by Samuel Tardieu. llvm-svn: 57292
-rw-r--r--llvm/lib/Target/CellSPU/SPU.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/llvm/lib/Target/CellSPU/SPU.h b/llvm/lib/Target/CellSPU/SPU.h
index 2d765b6ba01..776b9bfb083 100644
--- a/llvm/lib/Target/CellSPU/SPU.h
+++ b/llvm/lib/Target/CellSPU/SPU.h
@@ -15,6 +15,7 @@
#ifndef LLVM_TARGET_IBMCELLSPU_H
#define LLVM_TARGET_IBMCELLSPU_H
+#include "llvm/Support/DataTypes.h"
#include <iosfwd>
namespace llvm {
@@ -33,25 +34,33 @@ namespace llvm {
This predicate tests for a signed 10-bit value, returning the 10-bit value
as a short if true.
*/
- inline bool isS10Constant(short Value) {
+ template<typename T>
+ inline bool isS10Constant(T Value);
+
+ template<>
+ inline bool isS10Constant<short>(short Value) {
int SExtValue = ((int) Value << (32 - 10)) >> (32 - 10);
return ((Value > 0 && Value <= (1 << 9) - 1)
|| (Value < 0 && (short) SExtValue == Value));
}
- inline bool isS10Constant(int Value) {
+ template<>
+ inline bool isS10Constant<int>(int Value) {
return (Value >= -(1 << 9) && Value <= (1 << 9) - 1);
}
- inline bool isS10Constant(uint32_t Value) {
+ template<>
+ inline bool isS10Constant<uint32_t>(uint32_t Value) {
return (Value <= ((1 << 9) - 1));
}
- inline bool isS10Constant(int64_t Value) {
+ template<>
+ inline bool isS10Constant<int64_t>(int64_t Value) {
return (Value >= -(1 << 9) && Value <= (1 << 9) - 1);
}
- inline bool isS10Constant(uint64_t Value) {
+ template<>
+ inline bool isS10Constant<uint64_t>(uint64_t Value) {
return (Value <= ((1 << 9) - 1));
}
OpenPOWER on IntegriCloud