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

Reply via email to