Mercurial > hg > truffle
annotate make/bsd/makefiles/adlc.make @ 5705:f96e7b39e9fe
Be more strict on isInt check in CAS lowering when index is constant
Use array write barrier for UnsafeStore if we can't be sure we're not storing to an array
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 27 Jun 2012 15:40:03 +0200 |
parents | 719f7007c8e8 |
children | b9a9ed0f8eeb |
rev | line source |
---|---|
3960 | 1 # |
2 # Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. | |
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 # | |
5 # This code is free software; you can redistribute it and/or modify it | |
6 # under the terms of the GNU General Public License version 2 only, as | |
7 # published by the Free Software Foundation. | |
8 # | |
9 # This code is distributed in the hope that it will be useful, but WITHOUT | |
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 # version 2 for more details (a copy is included in the LICENSE file that | |
13 # accompanied this code). | |
14 # | |
15 # You should have received a copy of the GNU General Public License version | |
16 # 2 along with this work; if not, write to the Free Software Foundation, | |
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 # | |
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 # or visit www.oracle.com if you need additional information or have any | |
21 # questions. | |
22 # | |
23 # | |
24 | |
25 # This makefile (adlc.make) is included from the adlc.make in the | |
26 # build directories. | |
27 # It knows how to compile, link, and run the adlc. | |
28 | |
29 include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make | |
30 | |
31 # ######################################################################### | |
32 | |
33 # OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make: | |
34 GENERATED = ../generated | |
35 OUTDIR = $(GENERATED)/adfiles | |
36 | |
37 ARCH = $(Platform_arch) | |
38 OS = $(Platform_os_family) | |
39 | |
40 SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad | |
41 | |
4761
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
42 ifeq ("${Platform_arch_model}", "${Platform_arch}") |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
43 SOURCES.AD = \ |
3960 | 44 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \ |
45 $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad) | |
4761
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
46 else |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
47 SOURCES.AD = \ |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
48 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \ |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
49 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad) \ |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
50 $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad) |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
51 endif |
3960 | 52 |
53 EXEC = $(OUTDIR)/adlc | |
54 | |
55 # set VPATH so make knows where to look for source files | |
56 Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc | |
57 VPATH += $(Src_Dirs_V:%=%:) | |
58 | |
59 # set INCLUDES for C preprocessor | |
60 Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED) | |
61 INCLUDES += $(Src_Dirs_I:%=-I%) | |
62 | |
63 # set flags for adlc compilation | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
64 CXXFLAGS = $(SYSDEFS) $(INCLUDES) |
3960 | 65 |
66 # Force assertions on. | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
67 CXXFLAGS += -DASSERT |
3960 | 68 |
69 # CFLAGS_WARN holds compiler options to suppress/enable warnings. | |
70 # Compiler warnings are treated as errors | |
4006 | 71 ifneq ($(COMPILER_WARNINGS_FATAL),false) |
72 CFLAGS_WARN = -Werror | |
73 endif | |
3960 | 74 CFLAGS += $(CFLAGS_WARN) |
75 | |
76 OBJECTNAMES = \ | |
77 adlparse.o \ | |
78 archDesc.o \ | |
79 arena.o \ | |
80 dfa.o \ | |
81 dict2.o \ | |
82 filebuff.o \ | |
83 forms.o \ | |
84 formsopt.o \ | |
85 formssel.o \ | |
86 main.o \ | |
87 adlc-opcodes.o \ | |
88 output_c.o \ | |
89 output_h.o \ | |
90 | |
91 OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%) | |
92 | |
93 GENERATEDNAMES = \ | |
94 ad_$(Platform_arch_model).cpp \ | |
95 ad_$(Platform_arch_model).hpp \ | |
96 ad_$(Platform_arch_model)_clone.cpp \ | |
97 ad_$(Platform_arch_model)_expand.cpp \ | |
98 ad_$(Platform_arch_model)_format.cpp \ | |
99 ad_$(Platform_arch_model)_gen.cpp \ | |
100 ad_$(Platform_arch_model)_misc.cpp \ | |
101 ad_$(Platform_arch_model)_peephole.cpp \ | |
102 ad_$(Platform_arch_model)_pipeline.cpp \ | |
103 adGlobals_$(Platform_arch_model).hpp \ | |
104 dfa_$(Platform_arch_model).cpp \ | |
105 | |
106 GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%) | |
107 | |
108 # ######################################################################### | |
109 | |
110 all: $(EXEC) | |
111 | |
112 $(EXEC) : $(OBJECTS) | |
113 @echo Making adlc | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
114 $(QUIETLY) $(HOST.LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS) |
3960 | 115 |
116 # Random dependencies: | |
117 $(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp | |
118 | |
119 # The source files refer to ostream.h, which sparcworks calls iostream.h | |
120 $(OBJECTS): ostream.h | |
121 | |
122 ostream.h : | |
123 @echo >$@ '#include <iostream.h>' | |
124 | |
125 dump: | |
126 : OUTDIR=$(OUTDIR) | |
127 : OBJECTS=$(OBJECTS) | |
128 : products = $(GENERATEDFILES) | |
129 | |
130 all: $(GENERATEDFILES) | |
131 | |
132 $(GENERATEDFILES): refresh_adfiles | |
133 | |
134 # Get a unique temporary directory name, so multiple makes can run in parallel. | |
135 # Note that product files are updated via "mv", which is atomic. | |
136 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$) | |
137 | |
138 # Debuggable by default | |
139 CFLAGS += -g | |
140 | |
141 # Pass -D flags into ADLC. | |
142 ADLCFLAGS += $(SYSDEFS) | |
143 | |
144 # Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO. | |
145 ADLCFLAGS += -q -T | |
146 | |
147 # Normally, debugging is done directly on the ad_<arch>*.cpp files. | |
148 # But -g will put #line directives in those files pointing back to <arch>.ad. | |
149 # Some builds of gcc 3.2 have a bug that gets tickled by the extra #line directives | |
150 # so skip it for 3.2 and ealier. | |
151 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
152 ADLCFLAGS += -g | |
153 endif | |
154 | |
155 ifdef LP64 | |
156 ADLCFLAGS += -D_LP64 | |
157 else | |
158 ADLCFLAGS += -U_LP64 | |
159 endif | |
160 | |
161 # | |
162 # adlc_updater is a simple sh script, under sccs control. It is | |
163 # used to selectively update generated adlc files. This should | |
164 # provide a nice compilation speed improvement. | |
165 # | |
166 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS) | |
167 ADLC_UPDATER = adlc_updater | |
168 $(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) | |
169 $(QUIETLY) cp $< $@; chmod +x $@ | |
170 | |
171 # This action refreshes all generated adlc files simultaneously. | |
172 # The way it works is this: | |
173 # 1) create a scratch directory to work in. | |
174 # 2) if the current working directory does not have $(ADLC_UPDATER), copy it. | |
175 # 3) run the compiled adlc executable. This will create new adlc files in the scratch directory. | |
176 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files. | |
177 # 5) If we actually updated any files, echo a notice. | |
178 # | |
179 refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER) | |
180 @rm -rf $(TEMPDIR); mkdir $(TEMPDIR) | |
181 $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \ | |
182 -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \ | |
183 || { rm -rf $(TEMPDIR); exit 1; } | |
184 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR) | |
185 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR) | |
186 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR) | |
187 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR) | |
188 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR) | |
189 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR) | |
190 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR) | |
191 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR) | |
192 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR) | |
193 $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR) | |
194 $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR) | |
195 $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \ | |
196 || echo "Rescanned $(SOURCE.AD) but encountered no changes." | |
197 $(QUIETLY) rm -rf $(TEMPDIR) | |
198 | |
199 | |
200 # ######################################################################### | |
201 | |
202 $(SOURCE.AD): $(SOURCES.AD) | |
203 $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD) | |
204 | |
205 #PROCESS_AD_FILES = cat | |
206 # Pass through #line directives, in case user enables -g option above: | |
207 PROCESS_AD_FILES = awk '{ \ | |
208 if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \ | |
209 if (need_lineno && $$0 !~ /\/\//) \ | |
210 { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \ | |
211 print }' | |
212 | |
213 $(OUTDIR)/%.o: %.cpp | |
214 @echo Compiling $< | |
215 $(QUIETLY) $(REMOVE_TARGET) | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
216 $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE) |
3960 | 217 |
218 # Some object files are given a prefix, to disambiguate | |
219 # them from objects of the same name built for the VM. | |
220 $(OUTDIR)/adlc-%.o: %.cpp | |
221 @echo Compiling $< | |
222 $(QUIETLY) $(REMOVE_TARGET) | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
223 $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE) |
3960 | 224 |
225 # ######################################################################### | |
226 | |
227 clean : | |
228 rm $(OBJECTS) | |
229 | |
230 cleanall : | |
231 rm $(OBJECTS) $(EXEC) | |
232 | |
233 # ######################################################################### | |
234 | |
235 .PHONY: all dump refresh_adfiles clean cleanall |