Skip to content

Remove base_type_eq #4056

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Remove base_type_eq #4056

wants to merge 1 commit into from

Conversation

kroening
Copy link
Member

@kroening kroening commented Feb 3, 2019

These are no longer needed, as symbol_type is no longer in use.

  • Each commit message has a non-empty body, explaining why the change was made.
  • n/a Methods or procedures I have added are documented, following the guidelines provided in CODING_STANDARD.md.
  • n/a The feature or user visible behaviour I have added or modified has been documented in the User Guide in doc/cprover-manual/
  • Regression or unit tests are included, or existing tests cover the modified code (in this case I have detailed which ones those are in the commit message).
  • n/a My commit message includes data points confirming performance improvements (if claimed).
  • My PR is restricted to a single feature or bugfix.
  • n/a White-space or formatting changes outside the feature-related changed lines are in commits of their own.

@tautschnig
Copy link
Collaborator

I'm worried that this will break linking, where semantic equality still matters as tag names can reasonably differ.

Also, I think it is necessary to implement this change as a collection of smaller commits to aid (very likely) future debugging. With a change this size it will be very difficult to revert, and bisecting to identify which of the hunks caused trouble is difficult. Furthermore we'd in the current set-up be completely blocked on the known issues in the Java front-end, even though in theory it ought to be possible to remove any use of (base_)type_eq from C/C++ front-ends.

@kroening
Copy link
Member Author

kroening commented Feb 3, 2019

Will do C/C++ first; the rest will need to sit for a few months.

@smowton
Copy link
Contributor

smowton commented Feb 13, 2019

@kroening @tautschnig I tried to rebase #4021 yesterday, but found that it continued to stumble on cases where base_type_eq and operator== disagreed about when types matched.

I took a look at why we can't merge this yet, and found the following fixups:
#4170: simple tag-vs-followed bug in is_not_zero
#4171: string preprocessor using expanded types
#4172: generic tests rely on base_type_eq to strip generic info or array member types

I also made #4173 with a value-set fix and some cosmetic / comment improvements that I think should be picked into this PR.

@smowton
Copy link
Contributor

smowton commented Feb 13, 2019

Status with all four of those merged: Java tests all pass, C tests all pass apart from Float-div2, Float-div3, noop1, all of which fail due to a disagreement between a stub symbol being of type f(void) vs. f(), aka f(...) (manifesting as ellipsis: 1). Would appreciate someone with more familiarity with the C front-end taking a look at how that ought to work.

@tautschnig tautschnig changed the title remove base_type_eq and type_eq [blocks: #4021] remove base_type_eq and type_eq [blocks: #2064, #4021] Feb 13, 2019
@tautschnig tautschnig changed the title remove base_type_eq and type_eq [depends-on: #3725, #4296, #4297, #4313, #4314, blocks: #2064, #4021] Remove base_type_eq [depends-on: #4296, #4297] Mar 7, 2019
@kroening kroening mentioned this pull request Oct 24, 2019
3 tasks
@allredj allredj removed their request for review December 19, 2019 15:34
kroening pushed a commit that referenced this pull request Nov 7, 2020
Remove link_to_library(goto_functions, symbol_table, ...) [blocks: #4056]
tautschnig added a commit that referenced this pull request Dec 21, 2020
goto-cc: also use the linker when processing multiple source files [blocks: #4056]
@codecov
Copy link

codecov bot commented Dec 21, 2020

Codecov Report

Merging #4056 (7a744e6) into develop (c43385b) will decrease coverage by 0.00%.
The diff coverage is 62.96%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #4056      +/-   ##
===========================================
- Coverage    69.50%   69.50%   -0.01%     
===========================================
  Files         1243     1242       -1     
  Lines       100674   100580      -94     
===========================================
- Hits         69977    69908      -69     
+ Misses       30697    30672      -25     
Flag Coverage Δ
cproversmt2 43.11% <38.46%> (-0.04%) ⬇️
regression 66.39% <62.96%> (-0.01%) ⬇️
unit 32.26% <7.69%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
src/goto-instrument/value_set_fi_fp_removal.cpp 86.84% <ø> (ø)
src/goto-programs/link_goto_model.cpp 79.54% <ø> (ø)
src/linking/linking.cpp 57.74% <58.33%> (+0.59%) ⬆️
src/analyses/does_remove_const.cpp 100.00% <100.00%> (ø)
src/goto-instrument/replace_calls.cpp 89.13% <100.00%> (-0.24%) ⬇️
src/goto-programs/goto_program.cpp 62.16% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c43385b...7a744e6. Read the comment docs.

Copy link
Collaborator

@tautschnig tautschnig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving , but @kroening: please double-check as I've added two commits of my own to make yours work. (Edit: those commits were moved to PRs of there own and have since been merged.)

@tautschnig tautschnig changed the title Remove base_type_eq [depends-on: #4296, #4297] Remove base_type_eq Dec 21, 2020
We consistently use tag types, and two expressions are now base_type_eq if, and
only if, they have types that compare equal.
kroening added a commit that referenced this pull request Jul 4, 2022
base_type_eq has been deprecated since 2019; a previous attempt to remove it
(#4056) has failed.
@tautschnig
Copy link
Collaborator

#6989 now takes care of most of the uses, with only three uses remaining thereafter.

kroening added a commit that referenced this pull request Jul 5, 2022
base_type_eq has been deprecated since 2019; a previous attempt to remove it
(#4056) has failed.
kroening added a commit that referenced this pull request Jul 5, 2022
The last uses have been removed, and base_type_eq has been deprecated since
2019; a previous attempt to remove it (#4056) has failed.
kroening added a commit that referenced this pull request Jul 5, 2022
The last uses have been removed, and base_type_eq has been deprecated since
2019; a previous attempt to remove it (#4056) has failed.
kroening added a commit that referenced this pull request Jul 5, 2022
base_type_eq has been deprecated since 2019; a previous attempt to remove it
(#4056) has failed.
kroening added a commit that referenced this pull request Jul 5, 2022
The last uses have been removed, and base_type_eq has been deprecated since
2019; a previous attempt to remove it (#4056) has failed.
kroening added a commit that referenced this pull request Jul 5, 2022
The last uses have been removed, and base_type_eq has been deprecated since
2019; a previous attempt to remove it (#4056) has failed.
@tautschnig
Copy link
Collaborator

Closing as this was now completed in #6989.

@tautschnig tautschnig closed this Jul 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants