diff --git a/Changes b/Changes index 8f4241c80..c10b4aa9d 100644 --- a/Changes +++ b/Changes @@ -42,6 +42,7 @@ Verilator 5.009 devel * Fix false error on new const assignment (#4098). [Tudor Timi] * Fix unpacked structs under classes (#4102). [Tudor Timi] * Fix DFG error on $countbits (#4101). [Paul Donahue] +* Fix -CFLAGS to allow overriding optimization levels (#4140). [Peter Monsson] * Fix false ENUMVALUE on expressions and arrays. * Fix unnecessary verilated_std.sv waivers in --waiver-output. diff --git a/include/verilated.mk.in b/include/verilated.mk.in index 56257b9f4..7a2d51ff6 100644 --- a/include/verilated.mk.in +++ b/include/verilated.mk.in @@ -235,14 +235,16 @@ $(VM_PREFIX)__ALL.a: $(VK_OBJS) $(VM_HIER_LIBS) ifneq ($(VM_DEFAULT_RULES),0) # Anything not in $(VK_SLOW_OBJS) or $(VK_GLOBAL_OBJS), including verilated.o # and user files passed on the Verilator command line use this rule. +# We put OPT_FAST/OPT_SLOW/OPT_GLOBAL before the other flags to +# allow USER_CPPFLAGS to override them %.o: %.cpp - $(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $< + $(OBJCACHE) $(CXX) $(OPT_FAST) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(VK_SLOW_OBJS): %.o: %.cpp - $(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_SLOW) -c -o $@ $< + $(OBJCACHE) $(CXX) $(OPT_SLOW) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(VK_GLOBAL_OBJS): %.o: %.cpp - $(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_GLOBAL) -c -o $@ $< + $(OBJCACHE) $(CXX) $(OPT_GLOBAL) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< endif #Default rule embedded in make: