I agree with your statement in general. In the case of ipo_icall.cxx, there is no obvious class to add the functions to -- using C-style static functions and exporting global functions from each source file seems to be the pattern in many of the files in ipa/main/optimize.
-David Coakley / AMD Open Source Compiler Engineering On Mon, Apr 18, 2011 at 3:22 PM, Sun Chan <sun.c...@gmail.com> wrote: > if possible, I'd rather not see "static" functions. Why not use > classes and member functions, we are supposed to be writing C++, at > least, the most basic form of C++? > Sun > > On Tue, Apr 19, 2011 at 3:30 AM, Min Zhao <mzhao...@gmail.com> wrote: >> >> I looked at the patch. It looks fine with me. >> >> Thanks, >> >> Min >> >> On Fri, Apr 8, 2011 at 1:19 PM, David Coakley <dcoak...@gmail.com> wrote: >>> >>> Could a gatekeeper please review the attached patch from the AMD team? >>> >>> It improves some specific optimizations for C++ programs. The code >>> changes are mostly in the area of IPA -- details below. >>> >>> -David Coakley / AMD Open Source Compiler Engineering >>> >>> >>> 1. Multi-target icall promotion >>> >>> The implementation has two parts. The first part is in IPA summary >>> phase, which generates multiple dummy call sites for the indirect >>> call target based on the feedback info: if the number of times >>> of the callsite is called exceeds the IPA_Icall_Min_Freq, and the >>> rate of one callee among the total calls of the callsite exceeds >>> IPA_Icall_Target_Min_Rate, then a dummy callsite is added for the callee. >>> Up to ICALL_MAX_PROMOTE_PER_CALLSITE dummy callsites could be added. >>> >>> The second part is in IPA transformation phase, which generates code >>> based on the number of dummy callsites coming with the indirect call, >>> and the wn_icall is transformed to >>> >>> if (*fptr == callee1) >>> callee1(...); >>> else { >>> if (*fptr == callee2) >>> callee2(...); >>> else { >>> ... >>> fptr(...); >>> } >>> } >>> >>> When a new call is added, the feedback info is updated with corresponding >>> call frequency, and the callsite map is updated with newly created call >>> node. >>> >>> 2. Devirtualization with overridden map >>> >>> The current devirtualization mechanism doesn't build virtual function >>> overridden relationship and use it to direct devirtualization, >>> which causes a lot of devirtualization opportunities to be missed. >>> By building the overridden map, we can safely devirtualize the virtual >>> call unconditionally in whole program mode when there is only one >>> candidate available in the overridden map for the call. >>> >>> >>> ------------------------------------------------------------------------------ >>> Xperia(TM) PLAY >>> It's a major breakthrough. An authentic gaming >>> smartphone on the nation's most reliable network. >>> And it wants your games. >>> http://p.sf.net/sfu/verizon-sfdev >>> _______________________________________________ >>> Open64-devel mailing list >>> Open64-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/open64-devel >>> >> >> >> ------------------------------------------------------------------------------ >> Benefiting from Server Virtualization: Beyond Initial Workload >> Consolidation -- Increasing the use of server virtualization is a top >> priority.Virtualization can reduce costs, simplify management, and improve >> application availability and disaster protection. Learn more about boosting >> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev >> _______________________________________________ >> Open64-devel mailing list >> Open64-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/open64-devel >> >> > ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel