You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2012/11/13 03:13:13 UTC
[lucy-commits] [4/16] git commit: refs/heads/master - Regenerate charmonizer.c
Regenerate charmonizer.c
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/8e075841
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/8e075841
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/8e075841
Branch: refs/heads/master
Commit: 8e075841da823912d28af20b51efab6678f846dc
Parents: c9466bf
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Sat Nov 10 17:33:34 2012 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Mon Nov 12 21:07:27 2012 +0100
----------------------------------------------------------------------
clownfish/compiler/common/charmonizer.c | 50 +++++++++++++++++++++----
clownfish/runtime/common/charmonizer.c | 50 +++++++++++++++++++++----
common/charmonizer.c | 50 +++++++++++++++++++++----
3 files changed, 126 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/8e075841/clownfish/compiler/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/common/charmonizer.c b/clownfish/compiler/common/charmonizer.c
index 030e5d9..b03a1c1 100644
--- a/clownfish/compiler/common/charmonizer.c
+++ b/clownfish/compiler/common/charmonizer.c
@@ -2425,6 +2425,18 @@ static const char chaz_Integers_literal64_code[] =
CHAZ_QUOTE( return 0; )
CHAZ_QUOTE( } );
+static const char chaz_Integers_u64_to_double_code[] =
+ CHAZ_QUOTE( #include "_charm.h" )
+ CHAZ_QUOTE( int main() )
+ CHAZ_QUOTE( { )
+ CHAZ_QUOTE( unsigned __int64 int_num = 0; )
+ CHAZ_QUOTE( double float_num; )
+ CHAZ_QUOTE( Charm_Setup; )
+ CHAZ_QUOTE( float_num = (double)int_num; )
+ CHAZ_QUOTE( printf("%%f\n", float_num); )
+ CHAZ_QUOTE( return 0; )
+ CHAZ_QUOTE( } );
+
void
chaz_Integers_run(void) {
char *output;
@@ -2444,6 +2456,7 @@ chaz_Integers_run(void) {
int has___int64 = false;
int has_inttypes = chaz_HeadCheck_check_header("inttypes.h");
int has_stdint = chaz_HeadCheck_check_header("stdint.h");
+ int can_convert_u64_to_double = true;
char i32_t_type[10];
char i32_t_postfix[10];
char u32_t_postfix[10];
@@ -2565,6 +2578,13 @@ chaz_Integers_run(void) {
}
}
+ /* Determine whether conversion of unsigned __int64 to double works */
+ if (has___int64) {
+ if (!chaz_CC_test_compile(chaz_Integers_u64_to_double_code)) {
+ can_convert_u64_to_double = false;
+ }
+ }
+
/* Write out some conditional defines. */
if (has_inttypes) {
chaz_ConfWriter_add_def("HAS_INTTYPES_H", NULL);
@@ -2616,22 +2636,22 @@ chaz_Integers_run(void) {
* uint64_t
*/
if (has_8) {
- chaz_ConfWriter_add_typedef("signed char", "int8_t");
- chaz_ConfWriter_add_typedef("unsigned char", "uint8_t");
+ chaz_ConfWriter_add_global_typedef("signed char", "int8_t");
+ chaz_ConfWriter_add_global_typedef("unsigned char", "uint8_t");
}
if (has_16) {
- chaz_ConfWriter_add_typedef("signed short", "int16_t");
- chaz_ConfWriter_add_typedef("unsigned short", "uint16_t");
+ chaz_ConfWriter_add_global_typedef("signed short", "int16_t");
+ chaz_ConfWriter_add_global_typedef("unsigned short", "uint16_t");
}
if (has_32) {
- chaz_ConfWriter_add_typedef(i32_t_type, "int32_t");
+ chaz_ConfWriter_add_global_typedef(i32_t_type, "int32_t");
sprintf(scratch, "unsigned %s", i32_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint32_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint32_t");
}
if (has_64) {
- chaz_ConfWriter_add_typedef(i64_t_type, "int64_t");
+ chaz_ConfWriter_add_global_typedef(i64_t_type, "int64_t");
sprintf(scratch, "unsigned %s", i64_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint64_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint64_t");
}
}
if (has_8) {
@@ -2752,6 +2772,20 @@ chaz_Integers_run(void) {
}
}
+ /* Create macro for converting uint64_t to double. */
+ if (can_convert_u64_to_double) {
+ chaz_ConfWriter_add_def("U64_TO_DOUBLE(num)",
+ "((double)(num))");
+ }
+ else {
+ chaz_ConfWriter_add_def(
+ "U64_TO_DOUBLE(num)",
+ "((num) & CHY_U64_C(0x8000000000000000) ? "
+ "(double)(int64_t)((num) & CHY_U64_C(0x7FFFFFFFFFFFFFFF)) + "
+ "9223372036854775808.0 : "
+ "(double)(int64_t)(num))");
+ }
+
/* True and false. */
chaz_ConfWriter_append_conf(
"#ifndef true\n"
http://git-wip-us.apache.org/repos/asf/lucy/blob/8e075841/clownfish/runtime/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/clownfish/runtime/common/charmonizer.c b/clownfish/runtime/common/charmonizer.c
index 5e5df1f..e1f7568 100644
--- a/clownfish/runtime/common/charmonizer.c
+++ b/clownfish/runtime/common/charmonizer.c
@@ -3472,6 +3472,18 @@ static const char chaz_Integers_literal64_code[] =
CHAZ_QUOTE( return 0; )
CHAZ_QUOTE( } );
+static const char chaz_Integers_u64_to_double_code[] =
+ CHAZ_QUOTE( #include "_charm.h" )
+ CHAZ_QUOTE( int main() )
+ CHAZ_QUOTE( { )
+ CHAZ_QUOTE( unsigned __int64 int_num = 0; )
+ CHAZ_QUOTE( double float_num; )
+ CHAZ_QUOTE( Charm_Setup; )
+ CHAZ_QUOTE( float_num = (double)int_num; )
+ CHAZ_QUOTE( printf("%%f\n", float_num); )
+ CHAZ_QUOTE( return 0; )
+ CHAZ_QUOTE( } );
+
void
chaz_Integers_run(void) {
char *output;
@@ -3491,6 +3503,7 @@ chaz_Integers_run(void) {
int has___int64 = false;
int has_inttypes = chaz_HeadCheck_check_header("inttypes.h");
int has_stdint = chaz_HeadCheck_check_header("stdint.h");
+ int can_convert_u64_to_double = true;
char i32_t_type[10];
char i32_t_postfix[10];
char u32_t_postfix[10];
@@ -3612,6 +3625,13 @@ chaz_Integers_run(void) {
}
}
+ /* Determine whether conversion of unsigned __int64 to double works */
+ if (has___int64) {
+ if (!chaz_CC_test_compile(chaz_Integers_u64_to_double_code)) {
+ can_convert_u64_to_double = false;
+ }
+ }
+
/* Write out some conditional defines. */
if (has_inttypes) {
chaz_ConfWriter_add_def("HAS_INTTYPES_H", NULL);
@@ -3663,22 +3683,22 @@ chaz_Integers_run(void) {
* uint64_t
*/
if (has_8) {
- chaz_ConfWriter_add_typedef("signed char", "int8_t");
- chaz_ConfWriter_add_typedef("unsigned char", "uint8_t");
+ chaz_ConfWriter_add_global_typedef("signed char", "int8_t");
+ chaz_ConfWriter_add_global_typedef("unsigned char", "uint8_t");
}
if (has_16) {
- chaz_ConfWriter_add_typedef("signed short", "int16_t");
- chaz_ConfWriter_add_typedef("unsigned short", "uint16_t");
+ chaz_ConfWriter_add_global_typedef("signed short", "int16_t");
+ chaz_ConfWriter_add_global_typedef("unsigned short", "uint16_t");
}
if (has_32) {
- chaz_ConfWriter_add_typedef(i32_t_type, "int32_t");
+ chaz_ConfWriter_add_global_typedef(i32_t_type, "int32_t");
sprintf(scratch, "unsigned %s", i32_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint32_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint32_t");
}
if (has_64) {
- chaz_ConfWriter_add_typedef(i64_t_type, "int64_t");
+ chaz_ConfWriter_add_global_typedef(i64_t_type, "int64_t");
sprintf(scratch, "unsigned %s", i64_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint64_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint64_t");
}
}
if (has_8) {
@@ -3799,6 +3819,20 @@ chaz_Integers_run(void) {
}
}
+ /* Create macro for converting uint64_t to double. */
+ if (can_convert_u64_to_double) {
+ chaz_ConfWriter_add_def("U64_TO_DOUBLE(num)",
+ "((double)(num))");
+ }
+ else {
+ chaz_ConfWriter_add_def(
+ "U64_TO_DOUBLE(num)",
+ "((num) & CHY_U64_C(0x8000000000000000) ? "
+ "(double)(int64_t)((num) & CHY_U64_C(0x7FFFFFFFFFFFFFFF)) + "
+ "9223372036854775808.0 : "
+ "(double)(int64_t)(num))");
+ }
+
/* True and false. */
chaz_ConfWriter_append_conf(
"#ifndef true\n"
http://git-wip-us.apache.org/repos/asf/lucy/blob/8e075841/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/common/charmonizer.c b/common/charmonizer.c
index ea6f684..4b587d2 100644
--- a/common/charmonizer.c
+++ b/common/charmonizer.c
@@ -3472,6 +3472,18 @@ static const char chaz_Integers_literal64_code[] =
CHAZ_QUOTE( return 0; )
CHAZ_QUOTE( } );
+static const char chaz_Integers_u64_to_double_code[] =
+ CHAZ_QUOTE( #include "_charm.h" )
+ CHAZ_QUOTE( int main() )
+ CHAZ_QUOTE( { )
+ CHAZ_QUOTE( unsigned __int64 int_num = 0; )
+ CHAZ_QUOTE( double float_num; )
+ CHAZ_QUOTE( Charm_Setup; )
+ CHAZ_QUOTE( float_num = (double)int_num; )
+ CHAZ_QUOTE( printf("%%f\n", float_num); )
+ CHAZ_QUOTE( return 0; )
+ CHAZ_QUOTE( } );
+
void
chaz_Integers_run(void) {
char *output;
@@ -3491,6 +3503,7 @@ chaz_Integers_run(void) {
int has___int64 = false;
int has_inttypes = chaz_HeadCheck_check_header("inttypes.h");
int has_stdint = chaz_HeadCheck_check_header("stdint.h");
+ int can_convert_u64_to_double = true;
char i32_t_type[10];
char i32_t_postfix[10];
char u32_t_postfix[10];
@@ -3612,6 +3625,13 @@ chaz_Integers_run(void) {
}
}
+ /* Determine whether conversion of unsigned __int64 to double works */
+ if (has___int64) {
+ if (!chaz_CC_test_compile(chaz_Integers_u64_to_double_code)) {
+ can_convert_u64_to_double = false;
+ }
+ }
+
/* Write out some conditional defines. */
if (has_inttypes) {
chaz_ConfWriter_add_def("HAS_INTTYPES_H", NULL);
@@ -3663,22 +3683,22 @@ chaz_Integers_run(void) {
* uint64_t
*/
if (has_8) {
- chaz_ConfWriter_add_typedef("signed char", "int8_t");
- chaz_ConfWriter_add_typedef("unsigned char", "uint8_t");
+ chaz_ConfWriter_add_global_typedef("signed char", "int8_t");
+ chaz_ConfWriter_add_global_typedef("unsigned char", "uint8_t");
}
if (has_16) {
- chaz_ConfWriter_add_typedef("signed short", "int16_t");
- chaz_ConfWriter_add_typedef("unsigned short", "uint16_t");
+ chaz_ConfWriter_add_global_typedef("signed short", "int16_t");
+ chaz_ConfWriter_add_global_typedef("unsigned short", "uint16_t");
}
if (has_32) {
- chaz_ConfWriter_add_typedef(i32_t_type, "int32_t");
+ chaz_ConfWriter_add_global_typedef(i32_t_type, "int32_t");
sprintf(scratch, "unsigned %s", i32_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint32_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint32_t");
}
if (has_64) {
- chaz_ConfWriter_add_typedef(i64_t_type, "int64_t");
+ chaz_ConfWriter_add_global_typedef(i64_t_type, "int64_t");
sprintf(scratch, "unsigned %s", i64_t_type);
- chaz_ConfWriter_add_typedef(scratch, "uint64_t");
+ chaz_ConfWriter_add_global_typedef(scratch, "uint64_t");
}
}
if (has_8) {
@@ -3799,6 +3819,20 @@ chaz_Integers_run(void) {
}
}
+ /* Create macro for converting uint64_t to double. */
+ if (can_convert_u64_to_double) {
+ chaz_ConfWriter_add_def("U64_TO_DOUBLE(num)",
+ "((double)(num))");
+ }
+ else {
+ chaz_ConfWriter_add_def(
+ "U64_TO_DOUBLE(num)",
+ "((num) & CHY_U64_C(0x8000000000000000) ? "
+ "(double)(int64_t)((num) & CHY_U64_C(0x7FFFFFFFFFFFFFFF)) + "
+ "9223372036854775808.0 : "
+ "(double)(int64_t)(num))");
+ }
+
/* True and false. */
chaz_ConfWriter_append_conf(
"#ifndef true\n"