0007 - I wouldn't agree to changing float to double. Determining the actual correct size uint64_t or something is probably the most future proof and portable. Did you check if this also impacts compiler performance?
nit: You've also slipped in a small configuration change + CCNAME += -mfpmath=sse -msse2 + C++NAME += -mfpmath=sse -msse2 + F90 += -mfpmath=sse -msse2 --------- Speaking from experience - I'd need to know more details of why you felt this change is even necessary. -------------- 0006 - The FFE clean-up is 494KB! I've copied below log of all the issues it fixes. It seems clear that for proper review they should be individually pulled out. ------------- Adapted code conditionally compiled under _TARGET32, (now referred to _TARGET32_OR_64) and code compiled under _HOST32 now referred to_HOST32_OR_64) for use when building the compiler in 64 bit mode. Note that _TARGET32 was a misnomer, since the 32 bit FFE build could target both 32 and 64 bit targets. The end result is the 64 bit build of the FFE produces the same WHIRL and nearly the same debugging/trace output as the 32 bit build. The key (and quite obtrusive) change: Instead of just declaring variables with type long, use type names to describe variables for various storage: typedef int const_pool_type; # for storage of constants typedef int name_pool_word_type; # for storage of strings typedef int wds_type; # for variables used in "block move" situations. Note that the above typedefs use int instead of long, since this keeps the indices of table entries the same between the 32 and 64 bit builds of the compiler when compiling the same code. Added dump_trace_printf that provides a generic mechanism dumping information to the (subroutine call) trace file. Now use INIT_OPND_TYPE to initialize variables of type opnd_type. Uninitialized variables of type opnd_type were sources of several hard to track down differences in FFE IR generation. Initialized string buffers to zero to prevent junk after a terminating null to be copied to the name pool. Fixed bad malloc size in check_duplicate_external_name() found by valgrind. Used the pointer size instead of the size of the object pointed to. Zero the token structure in gen_loop_lbl_name(), to eliminate tracing noise. Clean up function tracing file output and fixed return paths so that function end tracing will be called (more of this needs to be done). Fixed sizing problem ntr_const_tbl(), need to account for extra padding that may be added in create_format_tmp(). This could cause garbage to be added after the end of a generated string (since it occurs after null termination, the problem is usually innocuous). Add dbg_id field to STB_pkt type. This field is assigned a a value from a counter on allocation and thus provides unique identification. Added option -ustb_id. Beforehand, STB_pkt pointers were dumped in decimal. With this change they are now dumped as pointers, or when -ustb_id, the value of the the dbg_id field is dumped. This functionality is encapsilated in the newly added function cwh_stab_dbg_id(). Note that the implementation is a bit ugly since variables that hold STB_pkt pointers can also hold plain integer values. Also there are more calls to cwh_stab_dbg_id() (on unexercised code paths) need to be added. Added macro PDG_DBG_PRINT_P for printing pointer values in i_cvrt.c. Fields in the pdg_link structure of type unsigned int were used to hold pointers. The type for these fields has been changed to ptrdiff_t. Modified the tracing code accordingly. Call memset on string buffer in insert_init_stmt_for_tmp(), to prevent garbage appearing after the end null terminated strings that were entered into the file name pool table. Deleted opr_str since it hasn't been maintained (references have been replaced by operator_str). Add comment on how it should be generated if it is deemed useful to resurrect. Fixed bug in ntr_const_tbl, call memset on words being allocated to a string constant to ensure proper initialization. Exposed by tonto realmat.fppized.f90 with error: The intrinsic call "SPREAD" is being made with illegal arguments. The name pool value for the string "ncopies" may not be null terminated. Fixed handling of Character_1 constants in convert_to_string, need to null terminate result string. In several cases the compilation warnings were due to bad code, which has been fixed in this commit. Added a comment that the code path is not being exercised by our tests. Removed unused function update_fld_type(), though I added a comment about a problem in the code that should be fixed if it needs to be resurrected. Made a feeble attempt at making _HOST64 workable (this might have a long way to go to actually make this work). Hopefully others won't be concerned since _HOST32_OR_64 is a much saner hosting environment. To reduce the number of potentially problematic casts to "long *", that appear in grep output, I removed conditionally compiled code in that appears to only have been added due was seems to me an unwarranted concern for efficient efficiency. These will need to be added back if this wasn't indeed the case. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel